Bonum Certa Men Certa

How To Deal With Your Raspberry Spy -- Part IV: Doing The Task

By Gavin L. Rebeiro

Contents



Cover

Copyright

1 Acknowledgements

2 Introduction

2.1 Prerequisite Knowledge 2.2 Apparatus

3 Fundamentals

3.1 Communication 3.2 Kernel Ring Buffer 3.3 Drivers 3.4 Operating Systems 3.5 Special Files

4 YOU ARE HERE ☞ Doing The Task

4.1 Preparing The Boot Media 4.2 Connecting Physical Components 4.3 Using Picocom 4.4 OS Installation

5 Thanks

6 OpenPGP Key

A Malicious Hardware

B Linux Kernel Source Tree Analysis

C Digital Multimeter Tests

Summary: We now spell out the steps taken to actually replace the Raspberry Pi OS with something more trustworthy (for background see Part I, Part II, and Part III)

We’ve now covered enough ground to make the installation of NetBSD on our Raspberry Spy (over our UTUB) a relatively painless matter.



Let’s go through the process in little steps.

4.1 Preparing The Boot Media

I’m going to grab the appropriate NetBSD image by taking hints from the following:

NetBSD/evbarm on Raspberry Pi tells us everything we need to know to pick the right image. All the sections here related to booting are worth reading at least once. Also read sections about consoles and serial consoles at least once.

Raspberry Pi boot modes is useful if you want to dig deeper into the booting mechanisms of the Raspberry Spy. USB mass storage boot is particularly useful for booting off USB. Trust me, you don’t want to muck around with SD cards; they’re a nightmare.

NetBSD/evbarm can be referenced for general information about NetBSD on ARM boards.

The above links should give you a good idea of what’s going on and what needs to be done with regards to putting a NetBSD on a boot media that goes into a Raspberry Spy.

Let’s go through a concrete example.

My Raspberry Spy is of the model “3 B+” variety so I’m dealing with an ARM64 CPU architecture. We’ll follow along the instructions outlined in Installation procedure for NetBSD/evbarm; pay close attention to the section “NetBSD/evbarm subdirectory structure”; I follow these instructions as I explore Index of pub/NetBSD/NetBSD-9.1/evbarm-aarch64/.

I grab the appropriate image like so:

$ mkdir ~/Downloads/netbsd
$ cd ~/Downloads/minted
$ wget https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.1/evb c
 → arm-aarch64/binary/gzimg/arm64.img.gz


Now that we’ve got the image, we can write it to our boot media. I’m going to assume you have an appropriate reader already plugged into your GNU/Linux box. I’ve got my USB thumb drive as “/dev/sdg” on my system. Use the right block device file on your system1. We base our procedure along the lines of “Installation for ARMv7 and AArch64 devices with U-Boot” section from Installation procedure for NetBSD/evbarm:

$ gzip --decompress --keep arm64.img.gz
# dd if=arm64.img of=/dev/sdg bs=1M conv=sync
 → status=progress
$ lsblk -f | grep sdg


We’re going to ignore the minutiae of writing to block devices, bootloaders, and other adjacent topics related to the utilities we just used; that’s left for another time. We care about learning how to use a serial console in this project so we must stay focused on our primary target.

We’re going to have a look at how to make a serial install possible via some editing of the “cmdline.txt” file that now resides in the boot media (on the boot partition which is of type “vfat”):

# mkdir /media/netbsd_image
# mount /dev/sdg1 /media/netbsd_image
# grep "console" < cmdline.txt
# root=ld0a console=fb
# grep "enable_uart" < config.txt
# enable_uart=1


The “console=fb” part is to get out OS image to use the HDMI output. We will get rid of that string from the file “cmdline.txt”. Who needs that anyway? One way to do it2:

# ed cmdline.txt
21
,p
root=ld0a console=fb
1
root=ld0a console=fb
s/console=fb//
,p
root=ld0a
wq
11
# echo ",p" | ed cmdline.txt
11
root=ld0a





Remember to check your edits!

We also ensure that “enable_uart=1” is set in the file “config.txt":

# echo ",p" | ed config.txt
82
arm_64bit=1


kernel=netbsd.img
kernel_address=0x200000
enable_uart=1
force_turbo=0


Everything looks good! Additional useful information on the Raspberry Spy UART can be found in UART configuration. Pretty self-explanatory. That wasn’t so hard. Was it? Note that the following links document the files we’ve been messing around with:

The Kernel Command Lineconfig.txt

It’s a good idea to back up the state of your image, at this point3. We can now safely unmount our boot media and get on with the project:

# cd ~
# umount /media/netbsd_image


We change directory, before we unmount, so that we don’t get any “device busy” errors.

We’ve now got our boot media ready. Onwards!

4.2 Connecting Physical Components

Before you power up your UTUB, you should really check that the pins are working properly. The very basic test you should do is to check that the right voltage is being supplied. Check out Appendix C.

The pins on our UTUB and Raspberry Spy that we’re interested are the following:

● Raspberry Spy: Pin6 (Ground), Pin8 (GPIO14, TXD), Pin10 (GPIO15, RXD). You can find the layout in the official GPIO page.

● UTUB: I’ve got a CP2104 UTUB so I’ve got to only worry about the pins marked TX, RX, and GND. I have other pins on the module but they’re not relevant for this task.

We won’t be using any of the voltage pins on the boards because it’s more prone to errors. Just use the USB power supply that comes with your Raspberry Spy.

Don’t plug anything into power for the following sequence. Connect the jump-wires like so:

● Ground on UTUB to Ground (Pin6) on Raspberry Spy.

● TX on UTUB to RX (Pin10) on Raspbery Spy.

● RX on UTUB to TX on (Pin8) Raspberry Spy.

"We won’t be using any of the voltage pins on the boards because it’s more prone to errors."Don’t make the rookie mistake of matching TX with TX and RX with RX; TX always goes to RX and RX always goes to TX. Keep this in mind, always, when working with UARTs. Colour-coding your jump-wires helps.

We’ll just go over the order of attaching the stuff to do with power on our devices:

● Attach the USB power adapter to the Raspberry Pi without plugging the adapter into the power outlet.

● Attach the UTUB to your GNU/Linux box.

● Attach your USB power adapter to your power outlet.

The logic for the above procedure is that you can ensure that your serial interface is up and running before you start getting input from your Raspberry Spy.

4.3 Using Picocom

Using picocom(1) is simple. All we need to do is select the correct baud rate and give the right device file as a parameter to picocom(1).

I’ll give you an extract from the manual page to enlighten you:

In effect, picocom is not an "emulator" per-se. It is a
simple program that opens, configures, manages a serial
port (tty device) and its settings, and connects to it
the terminal emulator you are, most likely, already
→ using
(the terminal window application, xterm, rxvt, system
console, etc).
When picocom starts it opens the tty (serial port)
given as its non-option argument. Unless the
--noinit option is given, it configures the port to
the settings specified by the option-arguments (or
to some default settings), and sets it to "raw"
mode. If --noinit is given, the initialization and
configuration is skipped; the port is just opened.
Following this, if standard input is a tty, picocom
sets the tty to raw mode. Then it goes in a loop
where it listens for input from stdin, or from the
serial port. Input from the serial port is copied
to the standard output while input from the standard
input is copied to the serial port. Picocom also
scans its input stream for a user-specified control
character, called the escape character (being by
default C-a). If the escape character is seen, then
instead of sending it to the serial-device, the
program enters "command mode" and waits for the next
character (which is called the "function
character"). Depending on the value of the function
character, picocom performs one of the operations
described in the COMMANDS section below.


We use “C-a C-x” (Ctrl+a followed by Ctrl+x)4 to tell picocom(1) to exit; for more, RTFM; in particular, pay close attention to the “COMMANDS” section.

Make sure you’ve set up all the physical connections, as advised. It’s time to attach our UTUB to our GNU/Linux box and then make sure we invoke picocom(1) correctly:

# picocom --baud 115200 /dev/ttyUSB0
picocom v3.1



port is : /dev/ttyUSB0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 stopbits are : 1 escape is : C-a local echo is : no noinit is : no noreset is : no hangup is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv -E imap is : omap is : emap is : crcrlf,delbs logfile is : none initstring : none exit_after is : not set exit is : no

Type [C-a] [C-h] to see available commands Terminal ready


It really is that simple. You’ve now got a serial terminal ready and listening.

4.4 OS Installation

Now that you’ve got a serial terminal operational, all we have to do to install NetBSD on the Raspberry Spy is to plug the USB power adapter into the power outlet. Keep a close eye on what goes on in the output of your serial terminal:

...
[   7.4246937] root device:
[  11.6252523] use one of: mue0 sd0[a-p] ddb halt reboot
[  11.6252523] root device: sd0
[  13.9755661] dump device (default sd0b):
[  15.7257992] file system (default generic):
...


You should be promoted to pick a root device. I pick “sd0” as it’s the first ’disk’ offered by NetBSD (which can only be my boot media)5. I go for the suggested defaults, for everything else. No need to overcomplicate things, at this point.

You will probably see your Raspberry Spy reboot once or twice during the OS install process. Just pass the same parameters for the boot device, and you should be good to go.

Eventually, you should be met with the following:

...
NetBSD/evbarm (arm64) (constty)
...



login:


If you login as “root”, you should have a nice login shell presented to you.

And we are done! You’ve successfully done some tinkering over a serial terminal. That wasn’t so hard. Was it? You can shutdown your device (halt the OS) like so:

# shutdown -p now
...
[   910.5814809] The operating system has halted.
[   910.5814809] Please press any key to reboot.


You can now disconnect the power supply from your Raspberry Spy. Then just send “C-a C-x” to picocom(1); after which, you should see:

...
Terminating...
Thanks for using picocom
#


Welcome to the world of serial terminals; hack your heart out! ____ 1 The command lsblk -f should help you out here. Don’t wipe the wrong device by accident. 2 If you use another text editor, that’s fine. You really should learn ed(1) at some point though, especially if you want to get into embedded systems. 3 At least keep track of the files that you tweaked. If you use some sort of version-control-system, you get bonus points. 4 I don’t know why the manual doesn’t bother to explicitly mention that these are GNU-Emacs-style key sequences. 5 See the NetBSD sd(4) manpage for details.

Recent Techrights' Posts

IBM: The B Turns From "Business" to "Bailouts" to "Buybacks" ("IBM is the Next Intel")
Trying to shore up the falling share price/stocks while veteran workers and Vice President (with high salaries) are cut off
It's Friday Night Again, So Microsoft is Again Shelving (Under Weekend Lull) Nightmare News for XBox Staff
It did the same thing when the chiefs of XBox got canned
 
IBM CEO Can Become a Billionaire by Laying Off Tens of Thousands of Workers (or Buying Companies Using Borrowed Money, Only to Lay off Thousands in Them)
Like he did Confluent recently
Reminder That Linuxiac is a Slopfarm or Hybrid of Bobby and His LLMs
LLM fetishist that claims to cover Linux
BetaNews is Still Publishing Fake Articles, Sometimes Fake News, or LLM Slop Disguised as 'Journalism'
Slop isn't yet a thing of the past, but hopefully we'll get close to that by the end of this year
Gemini Links 30/05/2026: Writer's Block, Evil GAFAM (Google), and Scepticism of Slop
Links for the day
Links 30/05/2026: Fairphone 6, China’s Rise in Drug Development, Slop Wastes Money Without Delivering Value
Links for the day
Links 30/05/2026: Alarm Over Large Companies Cancelling Slop Contracts, Ozzy Osbourne Resurrection as Slop Draws Ire
Links for the day
Red Hat Exodus or RAs (or PIPs) in 2026 Not Limited to China, IBM is Doing Well at Hiding Layoffs
All we need to know is, does IBM hand out lots of PIPs?
SLAPP Censorship - Part 92 Out of 200: A Spouse Cannot be Turned "On" and "Off" Like a Faucet
Today's part will be very short because we keep the parts shorter in weekends and summer is officially around the corner (June on Monday)
The Register MS Has Just Published Fake Article That Mentions "AI" 23 Times. "Sponsored by Arm." It Does This Every Day.
A lot of the time we see this term everywhere in "the news" simply because slop pushers are paying for it
SQLite Under DDoS Attack by Slop Reports or Fake 'Bugs' (Just Like cURL and Many Other Projects)
Even Linus Torvalds is starting to talk about this
Links 30/05/2026: More GAFAM (Amazon) Mass Layoffs, Peter Schiff Warns of Trillion-Dollar Slop Bubble Waiting to Implode
Links for the day
Slop is Plagiarism
Trillions of dollars down the drain, invested in a dud
Gemini Links 30/05/2026: Rehabilitation and Taming Emacs Cache and Temporary Files
Links for the day
Richard Stallman (RMS) Talks and Secure Transmission of Private Communications in Formats Everybody Can Access With Free Software
Maybe the FSF should step up a bit the campaign to use Free software to communicate with one another
General Consultative Committee (GCC) Discusses Working Conditions of Employees of the European Patent Office (EPO)
On the agenda: Salary Erosion Procedure, Breastfeeding Policy, New Amicale Framework, Public Holidays 2027
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Friday, May 29, 2026
IRC logs for Friday, May 29, 2026
Links 29/05/2026: "Spyware Economy" and Cuba's Energy Crisis
Links for the day
Gemini Links 29/05/2026: Rap Rant and LLMs Criticised
Links for the day
Akira Urushibata on Misleading Numbers From Anthropic's Project Glasswing (False Marketing by FUD Tactics)
Posted yesterday and approved a short while ago
Censorship of Information Unflattering to IBM (or GAFAM)
Years ago we gave a platform to a censored Microsoft whistleblower
Silent Layoffs at Microsoft in 2026
Time will tell is there are investigative journalists out there who will quit parroting Microsoft (e.g. false layoff figures) and relying on LLMs controlled by Microsoft to spew out false "facts" for them
SLAPP Censorship - Part 91 Out of 200: Legal Aid in Support of Freedom of the Press and British Women (Attacked by Americans)
bolstered by prominent counsels
Codecs and Software Patents - Part XII - GNU's Web Site Will Soon Have Many Recent Talks by Chief GNUisance Richard Stallman (RMS)
GNU videos being transcoded or converted into AV1
[Video] Richard Stallman's Rapperswil (Switzerland) Talk Online
accessible without proprietary software
Trusting Trust is an Old Issue, Predating Rust and LLM Slop by Over Half a Century
Microsoft Lunduke wants to make a case against Rust and slop (LLMs), but the issues he addresses aren't exactly new or unique
California Should Have Abandoned So-called 'Age‑Verification Laws', Not Make Exemptions (for Now)
This has nothing to do with 1) children 2) safety 3) safety of children
Links 29/05/2026: Cory Doctorow on Why the Internet Feels So Broken, American Pope on Defederation
Links for the day
Techrights Does Not Censor Information About IBM, It Platforms and Retains Suppressed Voices From Inside IBM
They don't like it when people criticise the management [...] panic attacks mentioned
Bob (Robert) Cringely Devoted Three Years of His Life Trying to Profit From LLM Slop and Now He Sounds Off, It's Just Not Working and It Can Crash the Economy Soon
"The labs raising money at valuations with too many zeros are happy"
Techrights After About 60,000 Articles in 20 Years
Sites fail if they don't offer anything new or if they wrongly believe that adopting slop to parrot other sites will give them exposure
Organised Plunder or Robbery: GAFAM and Hardware Companies Rely on Media Bribery to Perpetuate False Narratives and to "Drive Sales" (and Drive Prices Upwards)
The price-fixing seems plausible and, if so, we need to demand action
Linux Foundation Destroys the Identity and History of Linux
Groklaw's PJ was thorn on the side of LF sponsors
The Problem of Microsoft Crimes
Opposing crime isn't "hatred"
The Fall of Slop (Even Microsoft Admits There's a Problem)
If Microsoft admits that slop is too expensive and is for "entertainment purposes" because it cannot be relied upon, why would anyone other than the pushers and profiteers still insist that slop bears potential?
Red Hat Will Die Inside a Dying IBM
IBM isn't where Red Hat came to thrive but where it came to die
Very Large Strike at the European Patent Office Today, "Production" Sank a Huge Deal
At this pace, we might be looking at tens of thousands fewer European Patents being granted this year
Gemini Links 29/05/2026: Leadership and Religion, the Board Game (Second Edition)
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Thursday, May 28, 2026
IRC logs for Thursday, May 28, 2026
Links 28/05/2026: Pakistan and Afghanistan Are Still Fighting, Iranians Back Online
Links for the day
"LLMs Are Not Much More Than Plagiarism Engines"
the impact of LLMs on communities and software projects
Is Slop Profitable Yet? No.
Everything is a giant minus
Bob (Robert) Cringely Has Just Explained That After 3 Years of Hard Work It Became Apparent LLM Slop is Unfit for Purpose in Courts
Added moments ago to Daily Links
Links 28/05/2026: LibreSSL 4.3.2, "Jeff Bezos Is Afraid Of What Comes Next", Measles Making a Comeback
Links for the day
PCs That Are Made to 'Expire' and 'Secure' Boot Contributing to Planned Obsolescence
People who are responsible for this ought to be held accountable
Evil, Faceless Corporation: Google Steals Money From You If You Don't Purchase an Android Device for MFA
At this point, under the guise of "hey hi" (slop) Google is firing tens of thousands of workers
People Go Back to Basics, Abandon Microsoft's GitHub to Avoid Slop
The media didn't pay any attention to GitHub's de facto chief quitting Microsoft only a few months ago
SLAPP Censorship - Part 90 Out of 200: When Efforts to Silence His Spouse and Also the Wife of a Blogger in Another Continent Only Give More Exposure to Embarrassing Information
The Garrett trial ended in October 2025
IBM - Much Like the European Patent Office (EPO) - Gives the President (Head of Board and CEO) All the Money While Staff Drowns in High Inflation Rates
They're discussing the same sort of thing we often see mentioned in the EPO
"THE REGISTER EXPLAINER" as "Paid-for SPAM" at The Register MS With "AI" 40 Times in the Short Page
What will be left of The Register MS in a few years?
2025: EPO President Campinos Breaks the Cookie Jar, Steals Another Million Euros While His "Brother-in-Law" Does Cocaine at the Office and Staff Prepares Rolling, Indefinite Strikes
any additional month of Campinos in charge of the EPO is a liability not just to the EPO but the EU as well
Gemini Links 28/05/2026: Dumping Microsoft GitHub, Gopher Rabbit Hole
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Wednesday, May 27, 2026
IRC logs for Wednesday, May 27, 2026