usb cat and audio mode - df8oe/UHSDR GitHub Wiki

The provided USB CAT functions (Computer Aided Tuning) in combination with the integrated USB Audio Interface enable you to:

  • Use standard HAM software to control many aspects of the receiver (tuning, modes, PTT). This is enabled by an emulated serial COM port using the well-documented protocol of Yaseu FT-817 receivers.
  • Streaming of the mcHF audio to your PC by use of a virtual microphone interface via USB. You can use this with any audio recording software or HAM software accepting soundcard input.
  • Transmitting audio from the PC via USB to the mcHF. Use with any soundcard compatible HAM software or audio tools.
  • Use the mcHF as SDR RF frontend for SDR software such as HDSDR, SDR# and others accepting sound card in- and output. That means you not only can receive IQ data but also transmit (e.g. with HDSDR). Bandwitdh is limited by the A/D conversion and sample rate in the mcHF (which is 48khz/16bits per sample).

All of this requires just a single USB cable which is plugged into the Mini-USB port of the mcHF.

Provided functionalities

  • USB Audio In (RX, 48kHz sample rate, both channels have same signal), default signal except in DIQ (Digital IQ) mode on mcHF
  • USB IQ In (RX, 48kHz sample rate, left channel is I, right is Q), DIQ (Digital IQ) mode on mcHF required
  • USB Audio Out (TX, 48kHz sample rate, left channel is used), DIG (Digital Audio) mode on mcHF required
  • USB IQ Out (TX, 48kHz sample rate, left channel is I, right is Q), DIQ (Digital IQ) mode on mcHF required
  • CAT control via FT-817 protocol using the virtual COM port, baud rate setting is ignored, any baud rate will work.
  • USB CW Key control via DTR of virtual COM Port (DTR == 0 -> no carrier, DTR == 1 -> CW carrier, requires use of PTT via CAT), can be used in parallel to a connected CW keyer

Enabling/Disabling USB CAT/AUDIO.

USB CAT and USB AUDIO is always enabled in current firmware (2.0.0 or newer). You just need to connect PC and mcHF.

  • Connect your PC to the mini-USB port.

  • Linux machines will now automatically detect both the virtual com port as /dev/ttyACM? and also the audio is automatically detected. Depending on the Linux sound package you are using, you may not see the capture device (sound in) in all programs. Pulse Audio does work, ALSA seems to have trouble seeing the capture interface. This may improve in future. Make sure that not programs like "modemmanager" access your device. See FAQ below.

  • Windows machines should load the audio in and out driver without problems. However, the virtual COM port needs special care on all Windows Version upto and including Windows 8.1. Windows 10 loads the right drivers automatically. All Windows version from XP on can operate the serial after installation of a "special" driver information file. See below for instructions.

Please Read: Understanding and Configuring External Frequency Control via CAT

CAT enables you to change the frequency of the LO of your UHSDR receiver. How it does this may be a litte surprising, so please read on: When you select a new frequency in your CAT program, the UHSDR firmware will switch to that frequency BUT stays in the same band memory, no matter which ham band your new frequency is in. This is nothing special, it works exactly as if you would turn the dial knob until seeing that frequency in the display. The result may be a little confusing, since it may appear now to you, that your band have switched order, when using band-/band+. Be assured, this is not the case. The band memory indicator on the top right of the QRG will tell you band you are in, and the band name derived from the frequency to the right of the frequency will tell you the band name of the current dial frequency. Now, there is a menu setting CAT Running In Sandbox, which controls if the changes to the frequency via CAT are permanently stored or not. If not, turning your TRX off and on will restore the "proper" order of bands (to be precise, it will not remember the last CAT frequency you set).

There is more to know: Normally your CAT frequency equals the displayed frequency. But if you are receiving IQ data via USB, this is not the case, since then by default the LO frequency is send (i.e. the frequency you see - translate offset). You can control which frequency you get in IQ (LO frequency or dial frequency) via the Configuration menu item CAT-DIQ-FREQ-XLAT.

Programs known to work

Programs for controlling the rig

All HAMLIB based programs should be able to control the main aspects if the FT-817 is available as choice. Baud Rate / Communication speed is not relevant. To transmit use the CAT PTT option if possible. RTS/DTR based PTT control is not supported. Please note that the FT-817 emulation is not complete. Especially programs reading and writing to EEPROM locations in order to activate certain specific FT-817 function will not be able to do so for obvious reasons. Very important EEPROM locations can be implemented if the respective functionality is present in the mcHF. Do it by yourself and contribute or ask for assistance if CAT control does not work as expected.

  • Omni-rig using FT-817 protocol
  • HamRadioDeluxe 5.x using FT-817 protcol

Programs used to receive/transmit digital modes

You will need to set the transmit source to "DIGITAL" in menu TX AUDIO Source (or switch TX Audio Source by long press on M3) if you plan to transmit audio from PC via USB.

  • FLDigi (Linux/Windows): works as expected using HAMLIB FT-817 control
  • WSJT-X (Linux/Windows): works as expected using HAMLIB FT-817 control
  • MMSSTV (Windows)
  • QSSTV (Linux)
  • Multipsk (Windows)

Programs used to receive/transmit CW

Recent firmware got a special support for PC based CW operation if CW mode is selected on mcHF. Use FT-817 CAT for reading and setting frequencies,in CW modes you may also use the DTR signal of the CAT serial port (same port!) to send CW from the PC via mcHF (PTT has to be handled via CAT protocol). DTR Line = High will key the mcHF. You can use your keyer as well if the PC is not sending CW in the specified mode (Straight, Iambic A or B, Ultimate). If you enable "Virtual RTS" in the UHSDR menu, RTS will switch the TRX to TX and DTR will key the CW signal (only in CW mode!). As long as Virtual RTS is set, the TRX will remain in transmission mode, ready to transmit.

Most programs will be able to send CW using the SSB audio mode. In this case "manual" keying with a keyer connected to the mcHF is not possible. All CW needs to be generated as audio signal and send to the mcHF via USB.

  • UCXLog: CW-Mode keying via DTR works (tested) and CAT command for PTT.
  • FLDigi: SSB only. QSK keying via audio right channel not supported.
  • N1MM / N1MM+ . You need to enable Virtual RTS in UHSDR menu, and use RTS for PTT and DTR for keying

Unsupported Programs for CW Virtual RTS / DTR Operation

WIN10 Users: PLEASE NOTE Due to a bug in the usbser.sys driver from Microsoft, Virtual RTS does not work correctly with all programs offering PTT via RTS. In problem cases the transmitter never returns from TX because the Windows driver never releases RTS. There is a fix for this, but it needs to be incorporated in the respective program, see https://github.com/df8oe/UHSDR/issues/1603#issuecomment-437706497 for more information. We will update this statement if further information or fixes are available.

Affected programs are (at least): TR4W, CWType, probably more.

Not affected programs (at least): N1MM / N1MM++. This work even under Windows 10.

SDR Programs for use with IQ Data

You can configure the mcHF to stream IQ data to the PC instead of processed audio (default) using the DIG IQ setting in menu 060 TX AUDIO Source. This will also automatically switch the stream from PC to mcHF to use I/Q Data. Technical parameters of the delivered/accepted IQ stream is 48khz sample rate, left channel I, right channel Q. Data is 16 bits. You may want to play with configuration menu CAT-DIQ-FREQ-XLAT which allows you to define the communicated mcHF frequency. This is either center frequency (default setting), i.e. LO frequency. Or it is the TUNE frequency, the frequency you see in the mcHF display, this typically 6 or 12 khz off center. Some software needs the lo to be sent via cat but most software use the tune (example all logging software, cluster spotting)

  • SDR# (Linux/Windows): soundcard receive (Linux needs build with MONO)
  • HDSDR (Windows): soundcard receive and transmit, rig control via Omnirig
  • Quisk (Linux/Windows)
  • GQRX (Linux)

Extended CAT Command Set (from 2.9.18)

The original FT817 commands have been extended to support additional functionality with the UHSDR firmware while retaining a fully compatible interface with existing CAT programs using the FT-817 command set. All of this is experimental and may change.

Command Name Available in Version Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Returns Comments
UHSDR_ID - Identify UHSDR CAT 2.9.18- 0x00 0x00 0x00 0x00 0x42 5 Bytes: 'U','H','S','D','R' If this returns anything but "UHSDR", don't use the extended CAT commands
READ_EEPROM - Access UHSDR Config Values 2.9.18- MSB of ConfigValueAddr plus 0x80 LSB ConfigValueAddr 0x00 0x00 0xBB 2 Bytes: config value, 1 byte in case of error This reuses the existing READ_EEPROM but uses 0x8000 + ConfigValueAddr as addr, this will not work on unsupported firmware or on a FT817
WRITE_EEPROM - Access UHSDR Config Values 2.9.19- MSB of Config Value plus 0x80 LSB Config Value LSB(Config Value) MSB(ConfigValue) 0xBC 1 byte This reuses the existing WRITE_EEPROM but uses 0x8000 + ConfigValueAddr as addr, this will not work on unsupported firmware or on a FT817

Installation on Windows XP - 8.1

In order to use the virtual serial port, Windows needs a driver for this interface. In fact, it needs only the information which driver to use. Windows driver download.

Windows Vista to Windows 8.1

  • Run the ST Virtual Com Port (VCP) driver installer. This will provide you with everything you need.
    The installer will install the driver's files in C:\Program Files (x86)\STMicroelectronics\Software\Virtual comport driver or C:\Program Files\STMicroelectronics\Software\Virtual comport driver.
  • Copy the contents of this directory to a place where you have write access to. Go there.
  • Look for the file stmcdc.inf in the win7 (for Vista/Win7) or win8 directory (for Windows 8 and 8.1).
  • Modify this file by replacing the respective part of the file with the following lines
[DeviceList.NT]
%DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5732&MI_00

[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5732&MI_00
  • Run dpinst_amd64.exe or dpinst_x86.exe in the same directory and you are done. You will most likely be asked for administrator rights, that is fine. If you have Windows 8 64 bit, you will need to follow the instructions for disabling signed drivers given below.

Windows XP

You need Win XP SP3 or have to find usbser.sys. Then follow the instructions above (worked for some) or point the device directly to the usbser.sys file (worked for others).

Windows 10

Should recognize the CAT device automatically. If not, try the instructions for Windows 8/8.1.

FAQ

I can see the Speaker/Microphone device but no sound is coming from/going to the mcHF. I have used an experimental firmware with USB Audio before.

This might be caused by the sample rate change. You have to tell Windows to switch to the right sample rate (16bit stereo, 48000 Hz).

  1. Right click on the loudspeaker symbol in the Windows taskbar. Select Recording Devices.
  2. Select STM Microphone entry and click on Properties.
  3. Click on Advanced tab, and set the right Default Format: 2 channel, 48000 Hz, DVD Quality
  4. Repeat 1. - 3. for Playback Device, STM Speaker

When I start transmitting using CAT, TX LED goes on for a very short time and then goes off.

You are in CW-U or CW-L mode. Switch to USB or LSB. TX in CW modes is not supported yet (and not necessary with most HAM software).

Linux: I can see the /dev/ttyACM0 device, but it still does not work with the programs like fldigi.

Most likely a program like modemmanager takes control of your devices. Many Linux distributions still install modemmanager by default. You can either change the udev rules (see here). The rule for the mcHF is:

`ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5732", ENV{ID_MM_DEVICE_IGNORE}="1"`

You can also uninstall the modemmanager, if it is not needed for other applications.

Another user pointed out that the Braille display driver 'brltty' might also take over control (see output of command dmesg and search for 'brltty' or use dmesg | grep 'brltty'). Unless you have a Braille display connected, you can safely uninstall this tool too.

You also need to have access to the serial port. On most Linux distributions you need to be member of group 'dialout'. Do an ls -l /dev/ttyACM* to find out who is allowed to access the device. Use id to see which groups you are member of. Use sudo useradd -G dialout <yourusername> and log on anew to add yourself to the group dialout. Change name of group if necessary.

Audio Tx is named plughw: card=interface DEV=0 Audio RX is named plughw: card=interface DEV=1

When I use CW-L and CAT, every frequency change via CAT switches to CW-U. Why?

That is a consequence of the used FT817 CAT protocol emulation. The FT817 CAT protocol know two CW modes, CW and CW-R. On a real FT817 this is used to received CW in the two side bands and the user can control which is mapped to CW (USB by default) and CW-R (LSB by default). The mcHF maps CW to CW-USB and CW-R to CW-LSB. I.e. in order to keep the mcHF in CW-L, you have to tell your CAT program to use CW-R instead of CW. How to do that depends on the program itself.

WSJT-X sound does not work with Ubuntu/Xenial 16.04, - (fldigi works well)

Add the following two lines into /etc/pulse/default.pa and reboot:

load-module module-alsa-source device=plughw:2,1   
load-module module-alsa-sink device=plughw:2,0   

Here the mcHF is my soundcard number #2, see instructions below for determining the sound card number on your system.

Then in wsjtx, select:
Input: alsa_input.plughw_2_1 (Left)
Output: alsa_output.plughw_2_0 (Both)

Find mcHF sound card number under Ubuntu

In the example above, the sound card number for the mcHF/UHSDR was 2. This is not necessarily true of your system! Once your mcHF is attached to your system, you can use the command aplay -l to determine the sound card number. For example, on this system the mcHF is card #1:

~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC898 Analog [ALC898 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC898 Digital [ALC898 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: mchf [USB Interface mchf], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

mcHF driver & Windows 8 64bit

Windows 8 64bit (and Windows 10 64bit) has the “driver signature enforcement” that permits to install only drivers with Microsoft signature. So, following the procedure in this page is not possible if you have a Windows 8 with 64bit AND "driver signature enforcement" enabled. Windows 10 is not affected as it should install the drivers automatically.

So if you have such a system, you have to remove the signature enforcement, following, for example, the procedure written in this page: https://www.howtogeek.com/167723/how-to-disable-driver-signature-verification-on-64-bit-windows-8.1-so-that-you-can-install-unsigned-drivers/

Only after you remove the signature enforcement you will succeded to connect the mcHF with the virtual port on the pc with Windows 8 64bit. Please note: removing signature enforcement instead is not necessary for bootloader and firmware updating and on Windows 10.

⚠️ **GitHub.com Fallback** ⚠️