Trying to get Digirig Mobile, CM108 PTT on Linux to work

I’m trying to get my digirig mobile (PCB v1.9) to work with Direwolf and a Baofeng radio from a Raspberry Pi. I have the Baofeng HT Digirig Cables Set from Digirig.

I’m unable to get the PTT function to work. I’ve ensured the /dev/hidraw0 device is set to rw permissions for the user running Direwolf (I’m using group audio, my user and direwolf user both are members of group audio, group audio has rw permissions to /dev/hidraw0). I have set a PTT CM108 line in my direwolf.conf. Direwolf never keys the radio.

I’ve tried using the cm108 tool included in direwolf (v1.7). Running that as
cm108 /dev/hidraw0
shows it toggling between 0 and 1. Radio is still not activated. Measuring voltage or continuity/resistance between GND and PTT on the two-pin Kenwood connector with a multimeter shows no change when cm108 toggles ptt state.

What am I missing?

Thanks
Hrafnkell TF3HR

Output from cm108

he@tnc:~/direwolf/build/src $ ./cm108
    VID  PID   Product                          Sound                  ADEVICE        ADEVICE            HID [ptt]

    ---  ---   -------                          -----                  -------        -------            ---------

**  0d8c 013c  USB PnP Sound Device             /dev/snd/controlC1                                       /dev/hidraw0
**  0d8c 013c  USB PnP Sound Device             /dev/snd/pcmC1D0c      plughw:1,0     plughw:Device,0    /dev/hidraw0
**  0d8c 013c  USB PnP Sound Device             /dev/snd/pcmC1D0p      plughw:1,0     plughw:Device,0    /dev/hidraw0

Permissions of /dev/hidraw0

he@tnc:~/direwolf/build/src $ ls -l /dev/hidraw0
crw-rw---- 1 root audio 242, 0 Nov  5 17:29 /dev/hidraw0

My udev rule for hidraw permissions

he@tnc:~/direwolf/build/src $ cat /etc/udev/rules.d/99-direwolf-cmedia.rules
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", GROUP="audio", MODE="0660"

PTT CM108

is for Digirig Lite. Digirig Mobile uses PTT by RTS.
With Digirig Mobile it should be something like

PTT /dev/ttyUSB0 RTS

1 Like

Thank you. I was just looking at the schematic of Digirig Mobile and realized this. The GPIO 3 PTT signal is just connected to a test point. The RIG_PTT line is driven by RTS!

1 Like

This setup works well now.

1 Like

I was just having the same issue and started looking for answers. The issue with using RTS for PTT is that it ties up the serial port and makes CAT control or other serial data unavailable for use by any other apps. For example, I am using Direwolf and it is configured to use RTS (because that is the only option). However, the radio (Yaesu FTM-500D) is able to provide serial output for GPS or decoded AX.25 packets, but since the serial port is already in use for RTS by Direwolf I am not able to access this data with a terminal program or a logger.

So, if one wanted to switch a Digirig Mobile to use GPIO3 from the CM108 for PTT instead of RTS, thus freeing up the serial port for other uses, what would be the recommended way to do that?

My inclination would be to remove R15 and run a normal human-sized 12K resistor from the GPIO3/PTT pad to the base of Q1. Is there an easier or better way?

With GPIO3 there is no need to invert the signal as it is with RTS so you’ll be tapping base of Q2. Refer to the PTT implementation in Digirig Lite for example:

digirig-lite-1_2-schematic.pdf (158.9 KB)

You may be able to avoid hardware mods altogether by splitting the COM port in software. Haven’t tried that personally, but I see some promising results by searching for “serial port software splitter”.

So I tried a few port splitters and had mixed results. The free ones do not allow for restricting access to the flow control lines, and the commercial ($$$) ones do not go far enough in doing so - and cost more than the digirig itself does. I really would like to completely block the ability for any app to assert the RTS line. Simply opening a serial port causes RTS to go active, and unless the app itself clears RTS it will trigger a continuous transmission.

I would like to discuss further the hardware options for doing this. Shall I start a new thread or would it be appropriate to continue here?

We can continue here. The hardware mode will require some precision soldering on your part, but it’s possible with the right equipment and patience.

My previous comments regarding modifying the circuit board were based on looking at the schematic. I have since removed the board from its enclosure and now I see just how tiny these parts are! My soldering iron was considered fine tipped about 30 years ago, but today it looks more like a sledgehammer. I may need better tools to carry this out.

Looking at the top of the board with the USB connector on the right, I see Q2 at the top edge and Q1 just below it. Fortunately these transistors have among the largest contacts visible on the board. I have board revision 1.11 for anyone from the future reading this.

Regarding disabling the ability for RTS to trigger transmit, my initial thought was to remove R15 but I see a very short trace on the top of the board from the base of Q1 to R15 and it looks like I may be able to cut it with the tip of an xacto blade. What would you recommend here?

Then to switch to using GPIO3 from the CM108 to trigger transmit, I see that the Digirig Lite has a rather different PTT circuit than the Digirig Mobile does, using a 1.5K resistor to drive Q3 on the Lite instead of the 12K used for Q1 on the Mobile. Would you recommend connecting GPIO3 to the base of Q2 through a resistor, or something else?

Yes, resistor is required when applying voltage to base to limit the current.

I would approach it like this so no additional parts would be required:

Disconnect Q1 by popping the lead of the board or clipping it.

image

Cut 5V trace and connect PTT line to via

Here’s the area of interest: