Linux and Amateur Radio
Before I describe how to use the Yaesu FT-991(A) with Linux, there is one gotcha to be aware of. In most Linux installations that use a GUI and NetworkManager, there is a little background application called modem-manager. It is started whenever a modem-type device is detected so NetworkManager can see if it can/needs to control it, and offer it as a means of communication. modem-manager scans serial ports, such as the one found inside the FT-991(A), with commands that will cause the radio to lock into transmit mode. When this happens, you have no choice but to power off the radio.
To avoid the trap of modem-manager ruining the party, you should always plug the USB port in to your Linux computer whilst the radio is powered off. The d.c. power supply can be on, or you can power it on after plugging in the USB port. Either way, wait at least 15 seconds before powering the radio on. This should have given modem-manager enough time to realise it cannot control the FT-991(A) and go away. One way to check how long this takes is to open a terminal window and run the command: sudo tail -f /var/log/messages Tail-ing the syslog messages before you plug-in the radio will give you and idea of how long it takes to detect the devices, and for modem-manager to let go.
Caveat Emptor: If you follow this and it borks your machine, it is not my fault! You have a back-up, right? If you have a desktop and no use for modem-manager, you can disable it by removing the file: /usr/share/dbus-1/system-services/org.freedesktop.ModemManager.service. NetworkManager will complain in /var/log/messages that it cannot start modem-manager. Shame!
In order to run some of the commands featured on this website, you will need to give yourself sudo access, and add yourself to the dialout group. This applies to the primary machine, and any virtual machines running CentOS / Fedora. If you install VirtualBox to run virtualised images, you will also need to add your uid to the vboxusers group.
Open a terminal window and enter: su - to become super-user. You will be prompted for your root password.
Add yourself to the wheel and dialout groups with the following command: usermod -G wheel,dialout uid
- where uid is your id as found from the command: whoami.
In the same terminal window as above, edit /etc/sudoers and un-comment either of the %wheel options, depending on whether you want to input your password each time you run a sudo command, or not. I prefer not, so I un-comment: %wheel ALL=(ALL) NOPASSWD: ALL
You will need to log-out and log-in again for the above changes to take effect.
The 2.6 kernel that drives CentOS 6 only contains the most basic code needed to support the USB interface of the Yaesu FT-991(A). If you wish to use the default kernel, you will need to patch it with the drivers for the USB serial-port and sound-card used inside the FT-991(A).
In order to make the driver, you will need to: sudo yum install gcc automake kernel-devel kernel-headers. This process will load any other dependencies needed.
Download the driver pack from the Silicon Labs website: http://www.silabs.com/documents/login/software/Linux_2.6.x_VCP_Driver_Source.zip and unpack it into your /home drive.
In order to patch your kernel, you will need to run a series of commands to make and install the modules. Or you can copy my handy script:
# Script to make and install CP210x drivers
# What version of kernel do we have here?
# cd to the driver directory
# Clean and make the driver
# Set the required permissions
chmod 755 cp210x.ko
sudo chown root:root cp210x.ko
# Copy the driver to its new home
sudo cp cp210x.ko /lib/modules/$UNAME/kernel/drivers/usb/serial/
# Load the modules
sudo insmod /lib/modules/$UNAME/kernel/drivers/usb/serial/usbserial.ko
sudo insmod cp210x.ko
I have a ~/scripts directory for all of my scripts, and I saved the above as CP210x-driver-insmod. Remember to chmod 755 CP210x-driver-insmod so you can execute it.
Run the script from a terminal window with: ./scripts/CP210x-driver-insmod. You will need to do this each time you update the kernel, and/or if the drivers appear not to be working.
The alternative to the above is to install kernel-lt from the ELrepo project. kernel-lt and kernel-ml are branches of the 4.x kernel, which has full support for the USB interface. I will leave the installation to the reader with a tip: remember to modify /etc/grub.conf and set the default=0 so your system boots kernel-lt.
At the time of writing, kernel-3.10.0-514.16.1.el7.x86_64 appears to have back-ported drivers for the CP210x USB chip. You may still want to run kernel-lt or kernel-ml from ELrepo to ensure you are using the latest and greatest drivers.
I prefer to use the long-term supported clone of Red Hat Enterprise Linux known as CentOS for its stability, especially on production systems. The downside of being super-safe is a lack of Amateur Radio software and toys. Those toys are present in Fedora - the bleeding-edge development version Red Hat use to test-bed their new ideas before rolling them into RHEL (and by extension, CentOS). Some are also available from Extra Packages for Linux (EPEL), but not as many as are available from Fedora. Whilst you can take packages from rawhide and rebuild them for CentOS using mock, they do not always work - especially if they rely on new features in libraries that you cannot rebuild and replace without breaking important things!
The answer to the conundrum is to install VirtualBox (plus the extension pack) and establish a virtualised Fedora This method allows you to play with xastir, wsjt-x, and others, without risking damage to your primary CentOS machine. You can also install VirtualBox on Microsoft Windows, then run Fedora as a virtual image.
Page updated: 28th October 2018