Raspberry Pi Pivot
I am switching to the “Le Potato” Raspi clone for RTL-SDR projects
For a few years, I had too many Raspberry Pis. I was eager to purchase them before I had a specific use case. They sat around like props, decorating the background of my Zoom calls. That problem has gone away in the past few years as I have found uses for all four of my Raspis. Now I have a new problem, I need more and they are currently hard to find or overpriced.
Thankfully, Linus Tech Tips had recently published a video highlighting alternatives. I did not need the power of a Raspi 4, so Le Potato aka aml-s905x-cc was a good alternative to the Raspi 3 for me. It comes in at $35, right where the Raspi 3 would be if not for the scarcity. You can find Raspi3 resellers selling from $50–$150 which is not an amount I want to pay for a $35 MSRP.
How I use Le Potato & Raspis
My typical set ups for Raspis are to support local sensors for my smart home, like particulate 2.5 and 5 micron. In addition, I typically will attach an RTL-SDR to have the raspi constantly grab information from common radio frequencies; I have 1 Raspis currently targeting 433.92 MHz and 915 MHz with another. My first Potato I set up was a redundant set up of the 433.92 MHz for sensors in my basement, since I was having reliability issues with picking up those signals on my other raspi focused on backyard sensors.
In order to incorporate my raspi sensor data into my home network, I dump all the data into a json file. I expose this file on the pi’s web server, and use a REST Sensor in Home Assistant to pull this data. In addition, I serve a prometheus endpoint on these Raspis that exposes the sensor data for prometheus scraping.
The end result is good, granular historic data to look at in Grafana. In addition, accurate up-to-date sensor data for automation in Home Assistant.
Sensors
You can pack a lot of functionality onto a Raspi or Potato. The Raspi reporting the most data in my house is a Raspi 2. I have the following metrics exposed on this endpoint, getting updated twice a minute:
# via bluetooth
radon shorterm average
radon longterm average
voc
co2
temperature
# via rtl-sdr
inside temperature
My electricity meter's consumption data
inside humidity
outside temperature
outside gust speed
outside rainfall
outside humidity
solar radiation
wind direction
inside pressure
average wind speed
#via usb sensor
particulate matter 2.5 micron
particulate matter 5 micron
How I set up Le Potato
I bought all this from Amazon (these are affiliate links and I get kickback if you purchase these items):
- Le Potato 2 GB — https://amzn.to/3MxVmqs
- USB Wifi Dongle — Potato doesn’t come with wifi, this works without driver install on Raspbian
- 128 GB high performance SD card (was on sale for $12)
- CanaKit raspi 3 power adapter (was on sale for $9) —
- RTL-SDR Blog Package v3 — https://amzn.to/3OFE51a (I am still using v2, been going strong running constantly for 2+ years).
- Powered USB Hub — I was having problems with power draw from the RTL-SDR, so I use an externally powered USB hub
Write Raspbian Image to SD Card
Once you have everything ready. Grab the appropriate image for Rasbian 11 for Le Potato. These are maintained by Libre Computing and can be found here. These instructions can be found in a different form here.
- Download Raspbian image for aml-s905x-cc
- Download Raspberry Pi Imager
- Plug in your SD Card
- Run Raspberry Pi Imager and write s905x Raspbian image to SD card.
- Open the /boot partition of the SD card and create a file called wpa_supplicant.conf with the following contents (replace your values):
country=COUNTRY_ISO_CODE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="NETWORK_SSID"
scan_ssid=1
psk="NETWORK_PASSWORD"
key_mgmt=WPA-PSK
}
- Create a file called ssh in order to enable ssh
- Create a file called userconf.txt that will contains
username:encrypted-password
and replace username with the username you would like to use and encrypted-password generated fromopenssl passwd -6 my_password_here
. - Once you are done with this, eject your SD card and plug all your goodies into your Potato.
RTL-SDR Bootstrap
Here is everything I ran to turn the Le Potato into a radio device able to interpret hundreds of different sensors:
#make sure you can see your RTL-SDR as a usb device
lsusb
#install build deps for rtl-sdr
sudo apt-get install git cmake libusb-1.0-0-dev build-essential
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/ && mkdir build && cd build/
cmake ../ -DINSTALL_UDEV_RULES=ON
sudo make
sudo make install
sudo ldconfig
cd ~
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
sudo reboot
sudo nano /etc/modprobe.d/no-rtl.conf
# add these three lines
# blacklist dvb_usb_rtl28xxu
# blacklist rtl2832
# blacklist rtl2830
#reboot
sudo reboot
#test rtl-sdr installation
rtl_test -t
# install rtl_433 deps
sudo apt-get install libtool libusb-1.0.0-dev librtlsdr-dev rtl-sdr doxygen
# clone the repo
git clone https://github.com/merbanan/rtl_433.git
# build
cd rtl_433/ && mkdir build && cd build && cmake ../ && make && sudo make install
# verify
rtl_433 -f 433M -F json
That last command will put your RTL-SDR into listening mode on 433mhz, a common frequency for sensors. rtl_433 will automatically interpret any recognized signals it receives and output them as JSON format.
You can find a list of supported devices and their frequency here. Most people will have some signals regularly reporting in their area. Check 915mhz as well, that’s what my Electricity Meter showed up on.
Next Steps
If you want to build your own dashboards using this data, you now have it in JSON format and can do what you wish. If you want to see more of what I did next, then I will follow up with a part two to go over how I set up Grafana and Prometheus and the sensors that I am collecting data from. Until then, cheers and good luck on your potato adventures.
See part 2 here: https://medium.com/@k0ryk/raspberry-pis-rtl-sdr-and-home-automation-9477359ac9cf
If you have any questions, please reach out in discord.