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

Like Microsoft and IBM, the 'Alicante Mafia'-Governed EPO Does PIPs Nowadays (at the EPO, It's "Professional Incompetence Procedure")
So "PIPs" are definitely in the EPO and we saw letters sent to staff
Time for Change, More New Articles, Less Curation
The oligarchy wants to gut the real press and replace media with slop and social control media (or social control media with slop in it, i.e. their own voices, mechanised)
Almost 1,600 EPO Employees Went on Strike Last Week
There is another strike coming 2.5 weeks from now
Over at Tux Machines...
GNU/Linux news for the past day
You Know Microsoft's "Value" is 100% Fictional When in One Single "Trading" Day in Wall Street It Loses THREE TIMES More in "Value" Than It Was 'Worth' in 2009
Microsoft does not behave like a company riding trillions but like a company that struggles with payroll
Better Outcomes When Facing the Discomfort of Conflict
Don't take the easy way out when the "hard way" is the right way and it can result in positive revelations
Leaving the United States 3 Years Ago Was the Best Decision We Made
A lot of stuff is being consolidated
 
Links 05/02/2026: Canadian Government Uses US LLMs to Override Expert Opinions, NVIDIA Troubles Due to Enablement of Mass Plagiarism ('Piracy') Misleadingly Obscured as "Hey Hi"
Links for the day
Explaining the Letter From JUDGE SYKES FRIXOU, Threatening Me Around the Time GNOME's Nat Friedman Lost His CEO Job at Microsoft GitHub and His Best Friend Got Arrested for Strangulation
this letter (with annotation) is critical
Linuxiac Not Rehabilitated, It's Still Full of LLM Slop (Part of a Trend)
The Web as a resource/source of information is perishing
"Sponsored by Azul" to Write Fake 'Article' About Azul, Quoting Azul Itself
The "journalism" industry [sic] became so utterly corrupt
JuristGate is for sale: three billion Swiss francs for a domain name
Reprinted with permission from Daniel Pocock
Gemini Links 05/02/2026: Coercion, Antibiotics, and LVDT Project
Links for the day
IRC Proceedings: Wednesday, February 04, 2026
IRC logs for Wednesday, February 04, 2026
Links 04/02/2026: Extreme Malice in Microsoft's Visual Studio Code on GNU/Linux, More Hey Hi (AI) Chaos
Links for the day
Sexism & GNOME: shaming men, hiding women, Sonny Piers update
Reprinted with permission from Daniel Pocock
Gemini Links 04/02/2026: Humanity and Animality, systemd (Controlled by Amutable, a Proxy of Microsoft) Moves on to "Extinguish" Phase
Links for the day
Certificate Authority Let's Encrypt Used to be Widely Used in Geminispace, Now It's Down to Just 0.2% of the Whole
Let's Encrypt is not your friend
What IBM Does Is Clearly Illegal in the US: Tying Severance Packages to NDAs (Non-Disparagement Agreement/Clause)
The NDAs make things worse; they keep people isolated and silent
Microsoft's Giant Snowball of Layoffs and PIPs (in 2026)
They would delay until March or April if they wanted to, but then we can expect numbers exceeding 10,000 layoffs (Microsoft always low-balls the real figure/s)
Mozilla Turned Firefox Into Shovelware, Adding 'Kill Switch' for Slop Still Means Mozilla is Participating in a Pyramid Scheme, Plagiarism, Grifting
Mozilla is still a slop pusher
Links 04/02/2026: "Laws of Succession" and Microsoft's VS Code as Code-Stealing Malware
Links for the day
BillBC (BBC) Covered Up Pedophilia, Now It's Covering Up for Its Sponsor Bill Gates by Reprinting His Lies, Which His Own Wife Disputes
Is Bill Gates having orgies (group sex)?
Phoronix Swims With the Real Trolls, People Who Fancy Proprietary Software and Back Doors
If Larabel begins to actively participate in provocation with the "Microsoft GitHub fans club", what does this tell us about Phoronix?
They Know Microsoft Layoffs Are About to Hit Them Hard
The gaming division at Microsoft is a complete catastrophe, lots of money (debt) down the drain [...] Buying Activision was all about misleading shareholders or hiding the deep trouble/problems XBox was having
Red Hat is Not a Linux Company, It's IBM's Ponzi Scheme Enabler
Had we still been stuck in 2021, perhaps IBM would plaster "NFT" or "metaverse" all over RedHat.com
Keep Grinding
"Don't let the bastards grind you down"
Mobbing at the European Patent Office (EPO) - Part III - Who's Going to Pay for the EPO's Corruption? (Aside From European Citizens)
Some people inside the EPO reached out to us
"Investors Are Concerned About an AI Bubble" (That GAFAM and IBM Ride)
A few decades from now IBM will only be remembered in the same sense many so-called 'AI' companies will be remembered
EPO Staff Union: "Very High Strike Participation on Friday 30 January", Another Strike Starts 19 Days From Now
EPO management in a bit of a panic
Censorship/Free Speech and Social Control Media
It's important to have a grasp of how contemporary censorship works and how to tackle it
Google News as Slop Booster
this is what Google links to
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Tuesday, February 03, 2026
IRC logs for Tuesday, February 03, 2026
Gemini Links 04/02/2026: "Raspberry Pi Relaxes the Rules for Its RP2040 Hacking Challenge" and "Long Web Society"
Links for the day
IBM Falls by Over 10%
a recipe for disasters like accounting fraud
Links 03/02/2026: Windows Copies GNU/Linux, Windows TCO Shown Again
Links for the day
Gemini Links 03/02/2026: Alhena Turns One, Slop Rejected, and Max Roy Carrouges Recalled
Links for the day
How to Identify Demonisation or Dehumanisation Tactics Against Interesting Figures or Luminaries in Free Software
Rather than in general or generally in technology
We Should Learn From Bulgaria
Why can't European companies and government recognise and react to a threat (when they see one)?
Dr. Andy Farnell on Why and How European Authorities Can Adopt Free Software, Parenting in the Age of Digital Abundance
Will Europe use technology that Europe controls (not the hegemon), for a change?
Canonical: Ubuntu is GAFAM (US), We're Resellers of American Proprietary Software
They want people to pay for a licence
Seems Like IBM Trolls Use Chatbots to Vandalise Platform That Discusses IBM's Secret Layoffs, Forever Layoffs
Not for the first time either
You Know Your Company is Dead or Basically a Pyramid Scheme When Jim Cramer Keeps Promoting Its Stock
How much does IBM pay for "puff pieces" or "fluff" about QC?
Red Hat (Under IBM) Works for Microsoft (Proprietary Software) and Slop
Yesterday Red Hat's official site, redhat.com, published exactly 5 new blog posts
IBM is Dying (More Layoffs), Red Hat Will Continue to Suffer From the Acquisition
Financial engineering
Colombia Adopting GNU/Linux Even Faster (at Microsoft's and Apple's Expense)
Do politics play any role in this?
An Effort to Tackle Slavery in 'Open Source' Clothing
"a civil rights lawsuit to examine the concerns of censored developers in the free, open source software ecosystem"
$15 billion lawsuit: Ubuntu, Google & Debian crowdfunding campaign launch
Reprinted with permission from Daniel Pocock
The Solicitors Regulation Authority (SRA) Delusion - Part II - Why We Need to Expose the SRA to More Daylight, Public Scrutiny
SRA is neither effective nor regulated
Links 03/02/2026: "Distraction is a Sin" and Fake "Encryption" (Surveillance With Good Marketing)
Links for the day
400-Page US Federal Court Against Abuses by Google, Microsoft and Front Groups That Abuse Volunteers for American Corporations
There are 386 pages in total (in the US claim)
Corporate Influence Never Impacted Us
There's no reason to assume we'll ever "sell out"
Growth of GNU/Linux in Cuba
Right now a lot of the world drafts or already implements a GAFAM exit plan
A Day After EPO Strikes an Escalation to Heads of Delegations to the Administrative Council
They rely on the European media playing along, helping them to hide major blunders, even crimes
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Monday, February 02, 2026
IRC logs for Monday, February 02, 2026
Gemini Links 03/02/2026: Stargazing, Development Boards, and Tcl/Tk Slop
Links for the day