FMBerry icon indicating copy to clipboard operation
FMBerry copied to clipboard

Control 4 of those devices on a single Raspberry

Open 4920441 opened this issue 1 year ago • 5 comments

Hi, great work! After 11 Years I bought those Sony Ericcsoon devices I finally have some use for it.

The following:

  • Raspberry Pi with a 8 Channel sound card (USB)
  • 4 of those FM Transmitters

every two channels of those soundcards feed into one transmitter.. The next thing is to feed those 4 Stations in a local (house internal) Cable Headend to make FM Radio available again - no worries, not on a public cabletv station, its only attached internaly to a single building, so backfeeding it into the cable system is not an issue.

  • Problems to solve to make it work with only one raspberry:

-> Change the I2C Address to four different ones -> Change the RDS Pin (which should not be as difficult I hope...)

Do you have any hint or Idea where the I2C Address of the device might be settable?

Cheers

4920441

4920441 avatar Dec 22 '24 12:12 4920441

Hi 4920441,

here's the datasheet for the 603A/TSM-Z1 transmitter chip inside the MMR-70: https://www.mikrocontroller.net/attachment/142907/603A.pdf

As you can see, it only has a single address pin, which means you only have a choice of 2 different adresses. The Linux kernel supports something called I2C Multiplexers (also sometimes called Muxes), which are little chips that can be switched between different I2C busses (with conflicting addresses).

If you configure the Linux kernel correctly (through device-tree overlays) and tell it that you've got such a multiplexer, you'll get multiple different I2C devices in /dev/, one for each of the outputs of the multiplexer. The kernel will handle the switching for you transparently.

I haven't used it myself, but it looks like the TCA9548 chip is availble as little breakout boards and should be supported by Linux.

Switching the RDS pin is trivial, just change https://github.com/Manawyrm/FMBerry/blob/087a120133af4a311e0b44f051913fb02c8087b1/fmberry.conf#L46C3-L47C12 accordingly.

You'll also need to give each instance of FMBerry its own TCP control port and probably I2C bus.

Please report back if you're successful, I've never actually tried to run multiple of those transmitters on the same device. Also keep in mind that these things can output 2mW (+3dBm) of signal level, you don't want to apply that to a wired cable network without attenuation! A simple resistive power combiner/attenuator should do the trick, though :)

Good luck!

Manawyrm avatar Dec 22 '24 13:12 Manawyrm

Hi thanks!

I just ordered the multiplexer. So long I try to set up two of them only.

I'll keep you in touch of the progress!

Cheers

4920441

4920441 avatar Dec 23 '24 05:12 4920441

Hi,
do you have an idea where to change the address on the sony FMBerry board? Cheers,

4920441 avatar Sep 06 '25 14:09 4920441

Why not to use I2C multiplexer IC like TCA9548A or similar? Minimal code modification in I2C part and you can address up to 8 I2C devices.

JDat avatar Sep 07 '25 19:09 JDat

Minimal code modification in I2C part

Wouldn't even need code mods. The Linux kernel can work with I2C muxes natively and will transparently handle I2C muxes and let applications talk to the sub-busses as if they were real I2C interfaces. It's quite a neat trick!

do you have an idea where to change the address on the sony FMBerry board?

You'd need to mod the resistors for the I2C address, but like I mentioned, there's only 2 possibilities. A Linux kernel supported I2C mux would be the neat option :)

Manawyrm avatar Sep 08 '25 09:09 Manawyrm