It wasn’t too long ago that I purchased a generic pocket radio kit on eBay and built it. But as anyone knows, when it comes to shopping online for cheap Chinese goods, there are often lots of things that can catch your eye, resulting in a myriad of associated random purchases.
One such thing that caught my eye was a PCB advertised as an FM Microphone Module Wireless Audio Computer Circuit Board Radio Transmitter Kit. This jumble of keyword spam was quite interesting, as it seemed to allude to USB capabilities. I decided to purchase two, at AU$6.62 each.
The item was a PCB which had already been pretty much pre-constructed. Of course, it’s not entirely complete in the sense it has no outer casing and a few components you might want to use it with haven’t been included.
On the front, there is an LCD including blue LED backlight and six surface mount push buttons to control the unit with. The PCB is marked with FM_MIC_V5.0.9 as the text. There are two solder holes marked with DC and 3.7V, which are almost certainly battery connections (ground and positive respectively).
The rear of the unit has a microUSB-B connector, two solder points for an electret microphone on the left, and a solder point for an antenna on the bottom right. There are two wires soldered through already which are for the display LED backlight.
From what I can see, there is the main controller/display driver, marked with a brand logo with the letters JL, model number AC1552CG4R3F-E which doesn’t turn up much online. There’s an Atmel 24C02N I2C flash chip on board. Below that is a chip marked 8027 4901 5TCC which I’m not sure about – maybe it’s an opamp/driver chip of some sort. A 12Mhz oscillator module is seen to the left of that, and to the far left on the board, it seems that the chip marked MDAB G09 is an opamp of some sort for the electret microphone pre-amplifier.
Aside from the board placed inside an anti-static bag, there were no other inclusions.
Seeing as there was no manual, I decided to try and work out what all the buttons did based on the LCD. In all, it was relatively straightforward and intuitive.
The LCD has pictorial icons and seven segment sections to indicate frequency, transmit power, battery level, USB connectivity and mute status. The connection pads on the board allow for connectivity to an external antenna (recommended), and a Li-ion/Li-poly battery. The battery can be recharged through the microUSB connector, although without a battery, the voltage reached 4.35v which could be a bit on the high side. Connection of the battery is not mandatory for operation as the board will operate solely from USB power.
If connected to a PC without turning on in the battery charging mode, the unit seems to have a habit of causing bus errors, resulting in this annoying message.
In the case power is applied through USB from a power bank and no USB connection is obtained, the board appears to transmit audio from an electret microphone which can be connected to the pads behind. The board applies about 4.25v bias to the microphone, and the connections appear to be made monaurally (although the chip may be capable of analog stereo line-level subject to modifications which I haven’t explored). In this mode, the short press of the on/off button toggles the muting and un-muting of the transmit audio.
If USB is connected to a computer, and the unit is powered up from the front, the unit is detected as a USB Audio Device with VID E2B7 and PID 0811 which implies this is a Chipsbank IC of some sort. The device comes up with a name of CD002 and accepts only 16-bit 48khz stereo audio. It has a master volume control which does not actually function at all. In this mode, you can transmit audio by playing it to this sound device, and transmissions are made in stereo with no RDS information. A short press of the on/off button sends a pause/play command to the connected computer.
A button is offered to toggle through four different transmitter power levels (P1 to P4 on the screen, denoted by the cell-phone signal strength icon in the top left corner). Two buttons are used to change the transmission frequency up and down (0.1Mhz steps for short press, 1Mhz steps for long press/hold). The final two buttons controls the audio gain from U0 to U16 (17 steps total). The letter U is used instead of V because the 7-segment display cannot render a V.
Upon power up, last used settings are restored on all parameters (frequency, volume, power). Transmission frequency ranges from 87.0Mhz to 108.0Mhz inclusive. On preliminary testing, it seemed the transmitted audio quality was quite good, although the range was limited without soldering on an antenna (which I highly recommend doing). After adding the antenna, it performed quite well.
The first thing I wanted to know was how much power the unit consumed when connected to USB and transmitting audio. Since WFM is a constant envelope mode, it consumes the same amount of power whether transmitting program material or silence. I used my home-made USB current shunt and Keysight U1461A to measure the current.
It seems that the maximum power taken from the computer was 322.6mW (64.52mA) with the backlight on and the maximum transmit power engaged. Once the backlight is off, the unit consumed 277.2mW (55.44mA), which was very similar for power levels 2 to 4. With such small power consumption, the transmission power is very likely to be limited. The backlight current is about 9mA (45mW).
Of course, if we subtract the idle power (181mW) with the board connected but off, the total power is only around 100mW which would be shared by the USB audio controller and the FM transmission itself. Given most “crude” transmitters are about 50% efficient, this transmitter realistically couldn’t be any more than 50mW at a guesstimate.
I decided to do a little range testing, as I did back in high school when I built my first Funway 2 FM Bug transmitter. Back then, to get about 50m was considered quite good but potentially outside the law (as our laws are pretty strict on output power – more on that later).
I decided to record an MFSK image transmission as a WAV file from fldigi, and play it on loop at 108Mhz. The unit was set up with a 75cm wire antenna on the second floor of the house. The transmission would then be received and recorded with my Icom IC-R20 in WFM mode to the onboard audio storage at various points and the distances recorded. The images were then decoded from the audio.
From left to right: at 1m, 13m, 42m (high gain), 42m (low gain), 70m (low gain)
As you can see from the images, the transmitter seemed to put out a clean signal and the distance was quite reasonable. At 13m, the signal was as good as being next to the transmitter, so covering a house would likely not be an issue. By the time I stepped further outside to 42m, the receiver was having trouble maintaining a lock on the signal at high gain as the intermodulation and increased noise floor of competing signals overloading the front end caused the signal to be swamped out. Reducing the gain reduced these interfering signals, allowing a clean image to be received at 42m. By 70m, the signal was weak to the point that it was still identifiable, but noisy.
In all, the transmission range was comparable to kits that you could build yourself, and adequate for most private non-pirate-radio uses.
FM Transmitter Rules in Australia
FM audio transmitters can be used in Australia, and small personal ones such as these are covered by the Low Interference Potential Devices class license.
The conditions are quite onerous – namely, that you can operate from 88-108Mhz (not inclusive of 88Mhz), with a maximum equivalent isotropically radiated power of 10uW (i.e. 0.01mW, and since it’s EIRP, you can’t get around this by using a high gain antenna). The requirement is that it should have a maximum bandwidth of 180khz and not be co-channel with another service in its license area.
As I am in Sydney, I decided to do a quick check of the stations in the Sydney area using Wikipedia (not the most reliable resource), assuming each channel occupies +100khz and -100khz.
The free channel list appeared to be the channels in the table to the left. Unfortunately, in practice, many of the channels that seem free are not really usable, as they are licensed in adjacent broadcast areas (e.g. Wollongong, Gosford, Katoomba, St Marys) which means that their signals can be received fairly well in the Sydney basin as well. However, it was good to know what frequencies must be avoided.
I used to choose 103.6Mhz as my favourite spot, as it was typically quiet, but with less selective receivers, they could be captured by higher powered adjacent transmissions. The low-end of the band looked crowded, but generally with lower powered narrowcasting stations. Instead, I decided to just use the top of the band at 108Mhz which would avoid most of the issues for now.
Transmission Quality and Power
Seeing as I have a Tektronix RSA306, it would be amiss if I didn’t at least try to check the quality of the signals coming out of the unit. I decided to attach a scope lead and clip to the antenna output, the ground to the USB shell, and the BNC end to a BNC to N adapter. There will be some coupling losses (I’m not sure what impedance the antenna terminal was designed to match to) and losses in the cable.
I start with the unit on the low end of the band. We can see the transmission is the narrow peak in the middle, and it’s flanked on both sides by unwanted noise emissions. This noise is asymmetrical, which seems to suggest that a bandpass filter was designed to try and keep it at bay as much as possible. The noise emissions are about 44dB below the carrier (1kHz RBW) and probably represent phase noise from the synthesizer. Rather annoyingly is that there are 12Mhz harmonics which appear and have levels 41dB below the carrier outside of the FM band and into the aviation band/lower VHF band. Some of the spurs that appear are due to local stations being picked up by the scope lead.
Moving up towards the middle of the FM band at 100Mhz, a similar result is seen with the noise emissions, but this time, the highest harmonic spur is only down by 31dB relative to the carrier. This is probably because the band-pass filter is less active as the spur is now on the edge of the FM broadcast band. The action of the filter is also less evident as the noise assumes a more symmetrical shape. The 12Mhz harmonics indicate that the 12Mhz crystal oscillator used for USB is also being used to derive the transmission frequency.
At the top of the band at 108Mhz, the noise is a little asymmetrical again, and the peak harmonic spur is 22dB below carrier, although this one is in the “middle” of the FM band. I’m still slightly concerned that the transmissions out of the band are still about 33dB attenuated in the aviation band – I suppose one little transmitter like this isn’t going to put out enough power to do anything major, but whether this would be acceptable in terms of spectral masks is another story, as many often require at least 60dB reduction in power vs carrier outside of a certain bandwidth.
Unfortunately, knowing the exact absolute transmission power isn’t possible without knowing the losses in the cable, connection, impedance mismatch, etc. However, we can at least see what the analyzer says to us about the carrier power it sees in a 1kHz bandwidth.
At power level 1, the analyzer is seeing about -26.15dBm, or about 2.5uW. The actual power emitted might be higher as the coupling is imperfect, but this seems to likely be legal in the LIPD license conditions.
At power level 2, the analyzer reports -9.24dBm or about 119uW which is about 12 times the limit of the LIPD conditions.
Power level 3 pushes this even further to -4.78dBm or about 333uW which is 33 times higher than the limit.
Power level 4 sees an output of -4.77dBm, or basically the same as power level 3. I’ve tried this multiple times – it’s not a misprint – the power level 4 setting has no appreciable impact in transmission power.
While the transmitter does put out more than the ACMA LIPD rules stipulate is appropriate, the rules themselves are very strict and the kits that we’ve been building for years have put out similar levels. At this level, we’re still talking tiny-amounts of transmission power (sub mW) compared to the licensed transmitters operating 50kW+. As a result, the likelihood of a complaint or getting caught with one of these is very unlikely.
For this, I decided to use the RSA306’s Audio Analysis add-on features. Note the warm-up message was not appropriate as I had already warmed up the analyzer prior, and just closed and restarted the app to activate the audio analysis trial license. The first thing I checked for, and found, was the 19khz stereo pilot tone. I did increase the bandwidth, but no other sub-carriers were found as the unit does not put out RDS or any other features.
I tried to do some checking for harmonic distortion by transmitting a full-scale 1khz sine wave. The results were as follows:
It suggested that at full scale, the harmonic distortion products were visible, but were more than 58dB below the fundamental, which is decent enough for FM. THD was 0.265% with a 38.23dB SNR. The modulation distortion was reported as 7.421% and the bandwidth was about 162khz which complies with the 180khz limit.
I tried the same running at 50% input volume instead. It seems that the harmonic products dropped quite a bit, the next greatest product was about 61dB below and THD was 0.165%. The SNR was a bit reduced, modulation distortion was also increased however.
As the unit accepts 48khz audio, this got me thinking. Only the bandwidth from 0-19khz carries the L+R audio, whereas 19-38khz should carry the L-R signal. What if I put a 23.5khz signal into the card – does it filter it out correctly?
The answer is no, sadly, it doesn’t. As a result, if your program material has high frequency content above 19khz and you play it back, you could end up with the program material “aliasing” into the L-R signal and playing havoc with the stereo imaging. In fact, this was something I had noticed in my listening with some unexpected waviness in stereo balance. The other downside is that it seems that there is some form of non-harmonic distortion or intermodulation that causes new product signals in the audible frequency range of 14.528khz, 13.552khz at noticeable levels.
For good measure, I blasted white noise down one channel and silence down the other and we can see that the difference signal is being generated and does show up on the audio spectrum display. The transmission when zoomed in with an RBW of 1khz shows that the signal has about a 10dB fall-off at 100khz either side.
Reverse Engineering the EEPROM
Now that I know what it does and how it performs, I thought I’d probably try to work out what’s in the EEPROM and whether there’s anything good that can be done by tinkering with it.
First thought was to sniff the bus with my Picoscope 2205A, however, since this isn’t a “digital” capable unit, its decoding capabilities were somewhat limited. Instead, I resorted to using a CH341A to read out the EEPROM, erase it, and run a few experiments to determine its contents.
Of the 256 bytes the EEPROM can hold, just four bytes appear to be used. These are 0x07, 0x0B, 0x26 and 0x27. The results of a few of the experiments are summarized below:
EEPROM Blanked - all cells 0xFF Unit boots defaults: 87.5Mhz, P4, V16 If no settings changed and unit shut down, EEPROM remains blanked. If power is yanked instead of shut down, settings are not stored. Changing frequency results in data written to 0x26 and 0x27 0x26 - Frequency Store 0x27 - Frequency Store (+1) Values stored: 108.0Mhz - D2, D3 107.9Mhz - D1, D2 107.8Mhz - D0, D1 .. 087.0Mhz - 00, 01 0x27 always contains 0x26 +1. Making 0x26 and 0x27 identical -> no adverse effects. Making 0x27 a random value -> no adverse effects, boots with 0x26 Therefore 0x26 is used to determine frequency alone. Making 0x26 out of range (0xD3 or above) -> default 87.5Mhz. 0x07 - Volume Store V16 -> 0x10 V15 -> 0x0F .. V00 -> 0x00 Making 0x07 out of range -> defaults to V16. 0x0B - Power Level Store P1 -> 0x01 .. P4 -> 0x04 Making 0x0B greater than 0x04 -> assumes "default" P4 value.
That’s relatively good to know, however, I suspect maybe some of the other EEPROM locations are used for other configuration data. The locations and meanings are not known at this time, however, if I do get a good sniff of the bus accesses, I can probably at least know which addresses the unit seems to care about.
It’s a cheap and cheerful FM transmitter from China. For AU$6.63, you get a pretty capable board which can be connected by USB to a computer, come up as an audio device, and transmit stereo audio with an output covering at least a house. It’s not really a kit-per-se but more as an “unfinished” product sans-casing being sold as a module. That being said, it could be completed as a USB-chargeable FM microphone/bug if you wish, but the USB audio transmission capability was most interesting to me.
Audio quality was generally very acceptable to me, although it seems that audio low-pass filtering isn’t done which can result in stereo audio imaging issues for source material with signals of significant level above 19khz. The output bandwidth is within limits, although there are some spurs which are out of band which could be worth worrying about. Power levels are above ACMA limits (it seems), although that’s pretty common and unlikely to be a real world issue (more a feature).
Even though it came without instructions, it was easy enough to work out how to use it. If you want a short range PC to FM transmitter, this would work well.