fm streaming from subsonic to retro radios: typos

This commit is contained in:
Wouter Groeneveld 2023-02-10 20:59:36 +01:00
parent dd9948badd
commit 85e199918b
1 changed files with 3 additions and 3 deletions

View File

@ -10,7 +10,7 @@ categories:
- retro
---
Remember those FM transmitters you used in your car in the early 2000s to connect your iPod to your car radio tuner because it didn't have an audio-in port? I built an intricate version for my music setup. This idea is (again) inspired by William Woodruff's excellent [Modernizing my 1980s Sound System](https://blog.yossarian.net/2022/11/07/Modernizing-my-1980s-sound-system) post, where he combined a Raspberri Pi 3, an USB DAC, and HifiBerryOS to stream to his 1980s speakers from any device on the lAN through AirPlay or DLNA. William wanted to use his old boxes on his new [Navidrome streaming music server](/tags/navidrome) using any Subsonic-compatible client.
Remember those FM transmitters you used in your car in the early 2000s to connect your iPod to your car radio tuner because it didn't have an audio-in port? I built an intricate version for my music setup. This idea is (again) inspired by William Woodruff's excellent [Modernizing my 1980s Sound System](https://blog.yossarian.net/2022/11/07/Modernizing-my-1980s-sound-system) post, where he combined a Raspberri Pi 3, a USB DAC, and HifiBerryOS to stream to his 1980s speakers from any device on the lAN through AirPlay or DLNA. William wanted to use his old boxes on his new [Navidrome streaming music server](/tags/navidrome) using any Subsonic-compatible client.
That sounded (ha!) very cool, and I wanted to expand upon that idea to get it running on our own cheap retro radios. The problem is that our 1980s hardware doesn't even come with a (stereo) audio-in jack: the only way to play music is to plug in a cassette/CD, or tune in on a radio channel using FM or AM. The second challenge was also leveraging existing Subsonic clients, such as [Sonixd](https://github.com/jeffvli/sonixd) and [Substreamer](https://substreamerapp.com/). How to achieve that?
@ -26,7 +26,7 @@ Then, we duplicate that data for the response and the local file system, play th
The FM transmitter is small and the I2C protocol only requires 2 wires: a clock and an 8-bit (actually 7) data wire, with 2 for 3.3V and ground, and a fifth one to pulse a reset signal. The board works flawlessly with a cheap Arduino UNO, but as I also wanted to host a Go-based HTTP server and required an audio chip, I needed a bit more beef.
Speaking of which, the [Rock Pi 4](https://wiki.radxa.com/Rock4/getting_started) was a nightmare to install: after the 8th flashed `.iso`, it finally recognized the audio and video chip, booting the X server. Only the official Debian image seems to work, while I kept trying to install an Armbian one. To complicate matters further, 99% of embedded hardware software libraries are compatible with a Raspberry Pi, but not with a clone. The Rock Pi has a [different GPIO mapping](https://wiki.radxa.com/Rock4/hardware/gpio) that of course was missing in every framework I tried. I eventually fixed it myself in CircuitPython and the pull request is approved, yay! The only reason I bought a Chinese clone was because RaspPi's have been and still are on back-order. In other words, they're unavailable, and it sucks: to the amateur hobbyist such as myself, Linux compatibility is a serious issue.
Speaking of which, the [Rock Pi 4](https://wiki.radxa.com/Rock4/getting_started) was a nightmare to install: after the 8th flashed `.iso`, it finally recognized the audio and video chip, booting the X server. Only the official Debian image seems to work, while I kept trying to install an Armbian one. To further complicate matters, 99% of embedded hardware software libraries are compatible with a Raspberry Pi, but not with a clone. The Rock Pi has a [different GPIO mapping](https://wiki.radxa.com/Rock4/hardware/gpio) that of course was missing in every framework I tried. I eventually fixed it myself in CircuitPython and the pull request is approved, yay! The only reason I bought a Chinese clone was because RaspPi's have been and still are on back-order. In other words, they're unavailable, and it sucks: to the amateur hobbyist such as myself, Linux compatibility is a serious issue.
As for the FM transmitter setup, a bit of soldering is required to connect the pins which I had to retry more than a couple of times as it's very _very_ tiny according to my standards and refused to be recognized by `mraa-i2c detect` on I2C bus 0 (which is actually I2C7 or pins 3 and 5). Another few days of fiddling later, I discovered sending a high/low/high signal to the reset pin fixed everything.
@ -47,7 +47,7 @@ To summarize, the whole setup involves:
## The problem
William has been using a commercial FM transmitter for a few weeks as well before coming up with the DAC approach, so I was well aware of its shortcomings: potential interference with commercial senders' stronger signals and occasional drop-outs or cracklings. No problem for me, that's part of the retro radio charm.
William has also been using a commercial FM transmitter for a few weeks before coming up with the DAC approach, so I was well aware of its shortcomings: potential interference with commercial senders' stronger signals and occasional drop-outs or cracklings. No problem for me, that's part of the retro radio charm.
But my man-in-the-middle Subsonic API spoofing approach isn't entirely waterproof either: