allstarlink.jpg - 6,526 bytes

Modifying a CM108 Sound Fob

See the left side of the page for other operating modes and projects.
If this is not visable, click here to reload web page.

Note that as of 2011, it is possible to use an unmodified CM108 USB fob with any IRLP board or Asterisk parallel port interface instead of a modified fob.

Finding a CM108 Fob

Click here to visit the NewEgg Web Site This article describes the modification of a CM108 USB Sound Fob for use with Asterisk, Allstar Link, app_rpt VOIP software.

As of 2010, many distributors were selling USB Sound Fobs claiming to use the C-Media CM108 chip, but many are actually cheap "blob fobs" and not useful for CM108 applications. This is especially true of the International sellers.

I learned of a CM108 fob available at, and that product is the basis of this article. To visit the NewEgg site and view more details about the fob, pricing, etc, click on the fob picture. I have no interest in NewEgg, and this article is not meant to endorse this product in any way.

After purchasing my CM108 Sound Fobs from NewEgg, I found that these products were quite different than the ones shown in articles that described modifying a CM108 Fob.

I decided to try modifying a NewEgg CM108 Sound Fob, I wanted to document my approach for anyone that might modify one in the future. For reference, I ordered model# N82E16829128004

Click on pictures to enlarge image.

A Different Strategy

Other articles available on the Internet show the removal of the 3.5mm (1/8") stereo jacks from the PCB. I found that the audio circuitry on the fob was sufficient for my needs, and did not see the need to remove the audio jacks. The traces on the PCB are small and fragile, so it's possible to damage the PCB when removing the jacks.

Other articles typically suggest using the modified FOB to directly connect to node radios or repeater controllers.

My idea was to use my homebrew "Rigblaster" to control the radio's PTT and COS, as well as handle the audio levels, match impedances, etc. This interface was already built and interfaced to the radios, and has been working well for me for many years.

This project will adapt the CM108 fob to be compatible with a standard Echolink-type interface. My interface was built to use a serial port, DB9 pin 7(RTS) for PTT, pin 8(CTS) for COS, and pin 5 for ground.

Of course, you could also decide to use the information here to modify a Startech USB fob for PTT, COS and/or GPIO via USB. The 2008 article referenced at the bottom of this page will aid in your modification.

Parts List

1 - CM108 USB Sound Fob
1 - BAT43 (or other) diode
2 - 2N3904 (or other) NPN transistor
1 - 2N3906 (or other) PNP transistor
1 - 10k resistor (1/8 or 1/4 watt)
1 - 3.3k resistor (1/8 or 1/4 watt)
1 - 1k resistor (1/8 or 1/4 watt)
1 - 2.2k resistor (1/8 or 1/4 watt)
1 - DB9 Male connector 1 - DB9 Connector Hood
1 - 4 conductor cable (USB cables work well!)

Open the Case

cm108_open.jpg - 393,624 bytes Once I had a CM108 fob, it was time to modify it for PTT, COS, etc for use with my Amateur Radio station. All available articles that I could find showed a different model of sound fob than the model.

The StarTech models do not feature any buttons or LEDs, and also do not easily come apart! The cases are plastic-welded along the seams, and can be quite difficult to open.

Here is a picture of a StarTech fob that has been opened. Notice how well the case has been fused together with the plastic-welding process.

Be very careful when opening the case. I'd recommend wearing gloves, and perhaps using a small hobby vice to hold the fob case. I used a small utility knife, and used leverage between the USB plug and adjoining case. Once a small opening has been made, carefully run the blade along the case halves until you've opened the clamshell.

It may also help to use a small screwdriver to pry the case halves apart.

cm108_open_back.jpg - 357,694 bytes Looking at the bottom of the PCB, you can see that pads exist for buttons that are not used in this model of USB fob. We can avoid soldering to the tiny CM108 IC pins for all but one connection by soldering instead to the bottom of the PCB.

Look closely at the pad circled in red. This pad is the other half of switch "SW3" and is located near the center of the PCB.

This pin is connected by an existing PCB trace to CM108 IC pin 48. Use an ohmmeter to verify that you've selected the correct trace.

cm108_diode.jpg - 342,991 bytes

The anode of your BAT43 (or other) diode will attach to this solder pad. Prepare your BAT43 (or other) diode, so that the anode's lead will solder to this pad, and the diode body will be as shown on the top side of the PCB. (See picture).

I found that it helped to slide some wire insulation around the diode lead, to prevent shorting to the PCB.

The COS line of your receiver will attach to the cathode end of the diode. Connect the white wire from your USB cable to the cathode.

cm108_bottom.jpg - 403,925 bytes Next, we need to connect our black wire to ground and green wire to +5v from the USB bus. Using a multimeter, test the solder pad shown here to make sure it's the +5v pin. Be careful not to short the pin to ground.

Here is a picture showing the bottom of the PCB fully modified.

You can see the anode lead and +5v wire attached to the bottom of the PCB, and you can see a black wire attached to the USB connector's shell (ground).

cm108_top.jpg - 326,917 bytes This last step is by far the most difficult part of the modification. It involves very precise soldering to a tiny SMT pin of the CM108. I was quite pleased to accomplish this without destroying a fob, but I could understand a few casulties here.

What you need to do is solder one end of your 10k resistor to pin 13 of the CM108 IC. Thankfully, pin 13 is on a corner. Use a super fine, clean soldering iron. First tin the resistor lead, then slip some more wire insulation over the lead. I found that it made it easier to bend the end of the resistor 90 degrees, so that the CM108 pin and resistor lead met at a right angle.

Use a magnifying glass and good lamp. If you're not comfortable with surface-mount work, try practicing first on an old dialup modem or other electronics dinosaur first.

The other end of this resistor will connect to the base of a 2N3904 (or other) NPN transistor. Connect the transistor's emitter to ground, and collector to the red wire of your USB cable.

Use some hot glue to stabilize the parts, and modify the case between the audio jacks for the USB cable to pass through.

cm108_db9.jpg - 319,067 bytes All that remains now is to connect the USB cable to the DB9 connector as shown. This will all fit inside the DB9 connector hood, so it doesn't need to look pretty! This is ugly construction at it's best here.

Connect a 3.3k resistor to DB9 pin 8. The other end of the resistor to the base of a 2N3904 (or other) NPN transistor. The emitter goes to ground, and collector goes to the white wire of your USB cable.

Connect the red wire to a 1k resistor. The other end of the resistor to the base of a 2N3906 (or other) PNP transistor. Connect the green wire and one end of a 2.2k resistor to the emitter. The other end of the 2.2k resistor goes to the base.

                                                                                                 Refer to the schematic for modified CM108 and DB9 Shell details. 
cm108_schematic.jpg - 48,737 bytes

Your CM108 fob should now function as an "Rigblaster" adapter, with active-high +5v PTT keying, and active high COS.

Note that if you are handling the PL encode and decode in the radio (not in Asterisk DSP), you can use SimpleUSB instead of Usbradio. There is no down side to SimpleUSB if you handle the PL in the radio (as I do!)

The benefits are, less CPU and memory usage, the ability to run multiple nodes on a minimal PC, and less audio "jitter" than with Usbradio.

The following settings are used on my simplex node, and should provide a template of what you need to use in usbradio.conf

txctcssdefault=131.8                ; Disregard this CTCSS section unless you are using discriminator
rxctcssfreqs=131.8                  ; audio and injecting PL from the USB FOB directly into the modulator.
; rxctcssoverride=0                 ; If using muted, filtered receive audio and injecting mic audio 
                                    ; into the mic jack, you'll want to do your PL encode and decode
                                    ; in the node radio itself, not via Asterisk DSP.
duplex=0                           ; 0=half duplex    1=full duplex

Helpful Links

AllStar Link

ACID CD Download .

2008 CM108 modification article .

Please email me with your results also!

73 and good luck!

Back to the Main Page

This site requires a frames-compatible browser for proper page viewing. If you're having trouble viewing this page, or want to visit the non-frames page, click here

Last Updated May 9, 2013
©1997-2013 Kyle Yoksh