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

At Microsoft, "Firing People is a "Cheat Code" to Pump the Stock Short-term But They Are Literally Destroying the Company's Soul Long-term."
They frame layoffs as a "success story"
Google News Poisons Its Own Index With More Slopfarms (Including "filmogaz")
Naming and shaming lazy slobs who rip off other people using LLMs can work, eventually
Naming Culprits in Switzerland
Switzerland is highly secretive about white-collar crime
Sanitised Plagiarism as "AI" (How Oligarchy Plots to Use Slop to Hide or Distract From Its Abuses, or Cause People Not to Trust Anything They See/Read Online)
This isn't innovation but repression
Recent Layoffs at Red Hat (2026 the Year of Ultimate Bluewashing)
I found it amusing that Red Hat's CEO has just chosen to wear all blue, as if to make a point
Team Campinos Talks About SAP Days Before EPO Industrial Actions and a Day Before the "Alicante Mafia" Series (About Team Campinos Doing Cocaine)
EPO staff that isn't morally feeble will insist on objecting to illegal instructions
Stack(ed) Rankings and Ongoing Layoffs at Red Hat and IBM (Failure to Keep Staff Acquired by IBM)
IBM is mismanaged and its sole aim is to game the stock market (by faking a lot of things)
 
Great Reset at IBM, the Company That Pulps Red Hat
In 2026 many workers are RTO'ed, PIP'ed, and at Red Hat many have effectively 'left the company' and now start afresh as "IBM" staff
The "Alicante Mafia" - Part II - Breakout of Discontent This Winter in Europe's Second-Largest Organisation
So far we've caused a lot of panic and stress inside Team Campinos
The "Alicante Mafia" - Part I - An Introduction to the Mafia Governing the EPO
Are some people 'evacuating' themselves to save face?
J.H.M. Ray Dassen & Debian, Red Hat, GNOME unexplained deaths
Reprinted with permission from Daniel Pocock
Gemini Links 16/01/2026: "Porting My Main Website Over to Gemini" and Seeed Studio DevBoard
Links for the day
IBM Stacked and Ranked Badly, Maladministration Dooms the Company
Now they stack people up for PIPs and layoffs ("RAs")
Links 16/01/2026: UK Royal Family's "Legal Team Accused of Dishonesty, Fraud and Misconduct", OSI Still Controlled by Microsoft (the OSI's Spokesperson is on Microsoft's Payroll, Not Interim Executive Director, Deborah Bryant)
Links for the day
Writing About Corruption
Fraud is everywhere
The B in IBM is Brown-nosing and Buzzwords (or Both)
International Buzzwords Machines
IBM's 'Scientific-Sounding' Tech-Porn Won't Help IBM Survive (or Be Bailed Out)
Who's next in the pipeline?
IBM Was Never the Good Guy
its original products were used for large-scale surveillance, not scientific endeavours
The Bluewashing is Making Red Hat Extinct (They All Become "IBM", Little by Little)
IBM does not care what's legal
Slopfarms Push Fake News About Microsoft Shutdown, 30,000+ Microsoft Layoffs Last Year Spun as Only "15,000"
The Web is seriously ill
Countries Take Action Against Social Control Media and 'Smart' 'Phones', Not Slop (Plagiarised Information Synthesis Systems or P.I.S.S.)
None of this is unprecedented except the scale and speed of sharing
Sites That Expose Corruption Under Attack, Journalism Not Tolerated Anymore (the Super-Rich Abuse Their Wealth and Political Power)
Sometimes, albeit not always, the harder people try to hide something, the more effective and important it is for the general public
Links 16/01/2026: Social Control Media Curbs in Australia Underway, MElon Still Profiting by Sexualising Kids 'as a Service'
Links for the day
More People Nowadays Say "GNU/Linux"
We still see many distros and even journalists that say "GNU/Linux"
LLM Slop on the Web is Waning, But Linuxiac Has Become a Slopfarm
I gave Linuxiac a chance to deny this or explain this; Linuxiac did not
More Signs of Financial Troubles at Microsoft, Europe Puts Microsoft Under Investigation
The end of the library is part of the cuts
Pedophilia-Enabling Microsoft Co-founder Cuts Staff
Compensating by sleeping with young girls does not make one younger
Microsoft Shuts Down Campus Library, Resorts to Storytelling About "AI" to Spin the Seriousness of It
Microsoft is in pain
Free Software Foundation (FSF) Back to Advertising the Talks of Richard Stallman
A pleasant surprise
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Thursday, January 15, 2026
IRC logs for Thursday, January 15, 2026
Gemini Links 16/01/2026: House Flood and Pragmatic Retrocomputing Dogfooding
Links for the day
Links 15/01/2026: Starlink Weaponised for Regime Change (by Man Who Boasted About Annexing South American Countries for Tesla's Mining), Corruption in Switzerland Uncovered by JuristGate
Links for the day
Linuxiac May Have Reverted Back to LLM Slop (Updated Same Day)
Is he back off the wagon?
GAFAM and IBM Layoffs Outline
a lot of the layoffs happen in secrecy and involve convincing people to resign, retire, relocate etc.
Links 15/01/2026: Internet Blackouts, Jackboots Society in US
Links for the day
Coming Soon: Impact With EPO Cocainegate
Will Campinos survive 2026?
The Last 'Dilberts' or Some of the Last Salvaged (Comic Strips Which Disappeared Shortly After They Had Been Published)
Around the time the creator of Dilbert went silent he published some strips mocking TikTok and usage of it
The Creator of Git Probably Doesn't Know How to Install and Deploy Git
Nobody disputes this: Mr. Torvalds created Git
Slop is a Liability
Slopfarms too will become extinct because people aren't interested in them
GAFAM is a National and International Threat to Everybody
GAFAM is just a tentacle in service of imperialism
EPO People Power - Part XXXVI - In Conclusion and Taking Things Up Another Notch
They often say that the law won't deter or stop criminals because it's hard to enforce laws against people who reject the law
Running Techrights is Fun, Rewarding, and Gratifying
In Geminispace we are already quite dominant
Red Hat is Connected to the Military, Its Chief Comes From Military Family (From Both Sides)
The founder of Red Hat's parent company literally saluted Hitler himself (yes, a Nazi salute)
Don't Cry for Gaslighting Media in a Country Which Loathes the Press
my wife and I received threats for merely writing about Americans
Red Hat (IBM) is Driving Away Remaining Fedora Users
I've not used Fedora since Moonshine
Robert X. Cringely Has Already Explained IBM's Bullying Culture (Towards Its Own Staff)
IBM is a fairly nasty company
Proton Mail compromise, Hannah Natanson (Washington Post) police raid & Debian
Reprinted with permission from Daniel Pocock
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Wednesday, January 14, 2026
IRC logs for Wednesday, January 14, 2026
Gemini Links 15/01/2026: "Ode to elinks", envs.net Pubnix and Downtime at geminiprotocol.net
Links for the day
Still Condoning Child Labour and Exploiting Unpaid Children Developers as PR Props (to Raise Monopoly Money)
These people lack morals. So they project.
"Security, AI or Quantum" on "the IBM Titanic"
Who's RMS?
Hours Ago The Register MS Published Microsoft Windows SPAM "Sponsored by Intel." The Fake 'Article' Says "AI" 34 Times.
The Register MS isn't a serious online newspaper
EPO People Power - Part XXXV - Where Else Will Corruption and Substance Abuse be Tolerated?
We need to raise standards
Status and Capital
People who do a lot are too busy to boast about it and wear fancy garments
IBM Paying the Price for Treating Workers Badly and Discarding Real Talent (Because It's "Expensive")
IBM is dead man walking
Turbulence Ahead
I last rebooted my laptop in 2023
Google News Rewards Plagiarism With LLMs (About Linux, Too)
Google is in the slop business now
Links 14/01/2026: Failing Economy and Conquest Abroad as a Distraction From Domestic Woes
Links for the day
Gemini Links 14/01/2026: The Ephemerality of Our Digital Lives and "Summer of Upgrades"
Links for the day
Projection Tactics - Part III: Silencing Inconvenient Voices Online
If X gets banned in the UK, it'll be hard to see what the spouse says in public
Outsourcing on Microsoft's Agenda, Offshoring Also
"In some cases, India hiring is poised to replace certain roles previously based in the U.S."
Links 13/01/2026: 'Dilbert' creator Scott Adams Passes Away With Cancer, Ban on X/Twitter Considered for CSAM Profiteering
Links for the day
The Goal is Software Freedom for All
Anything to do with "Linux Foundation" is timewasting
Reminder That Red Hat Enterprise Linux (RHEL) Is Not Free, And It's Because of IBM
software freedom just 'gets in the way'
Under IBM, in Order to Game the Stock Market, Red Hat Resorted to Boosting the Biggest Ponzi Scheme in Human History
This is what IBM turned Red Hat into
Revision handed Microsoft the keys to the distortion of the past/history
This isn't the first time The Register MS rewrites computing history in Microsoft's favour, as we pointed out several times in past years
What Will Happen to GAFAM After the US Defaults Rather Than Bails Out the Market?
Or tries to topple every government that doesn't play by its rules?
EPO People Power - Part XXXIV - Bad Optics for the European Union (for Failing to Act and Tolerating Cocaine Use in Europe's Second-Largest Institution)
There are principles in laws which tie awareness with complicity
EPO's Central Staff Committee is Now Redacting (Self-Censoring) Due to Threats From the EPO "Mafia"
"On the agenda: salary adjustment procedure for 2025 (as of January 2026)"
"AI" (Slop) 'Demand' Isn't Growing, It's Fake, It's a Pyramid Scheme
They try to resort to 'creative' accounting (fraudulent schemes like circular financing)
Difficult Times at IBM and Microsoft Ahead of Mass Layoffs (Probably Before This Month's Results Unless Postponed to 'Prove' Rumours 'Wrong')
IBM and Microsoft used to be tech giants. Nowadays they mostly pretend by pumping up their stock and buying back their own shares.
Canonical: Make Ubuntu Bloated (Debian With Snaps), Then Sell the 'Debloated' Version for a Fee
If people want a light distro, then they ought not pay Canonical but instead choose a light (by design) GNU/Linux distro
People Don't Want "Just Enough", They'll Look for Quality
That's why slopfarms will go away or become inactive
Gemini Links 14/01/2026: 3D and Tiny Traffic Lights Pack
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Tuesday, January 13, 2026
IRC logs for Tuesday, January 13, 2026
Slop Waning Whilst Originals Perish
Slop is way past its "prime"
XBox's 'Major Nelson' Loses His Job Again, This Time in a Microsoft Mono Pusher
Microsoft hasn't much of a future in gaming. XBox's business is in rapid decline and people who push Mono to game developers are the same