891ctrl
CAT control & browser interface for the Yaesu FT-891 transceiver.
The application (no installation necessary) runs from a single JAR file (Java Archive). It connects to the 891 via USB CAT and opens a network port for the browser interface.
Supported platforms
- All platforms with Java 21+ which are supported by the jSerialComm library (see here)
- Modern web browser required (Firefox recommended)
Tested on:
- Lenovo x64 Windows 10/11, Mint Linux
- Raspberry Pi3 / Pi400 (Raspberry Pi OS)
- MacBook Air M1 / Mac Mini M4
Raspberry Pi Info
Pi Zero or older:
Not supported. Java 21 for ARMv6 is not available on Raspberry Pi OS
Pi Zero 2:
Supported but not recommended. Apparently the Pi Zero 2 creates strong QRM on the USB connection (You can even hear the linux boot sequence in the radio). I tried shielding, USB isolator and clip-on ferrite cores on the cable without any luck. The Pi3 and Pi400 do not show this problem.
Download
Non-commercial, personal use only. This software is in beta state. Use at your own risk.
[releases built by github actions]
Date | # | MD5 | Notes |
---|---|---|---|
12.03.25 | 132 | fc09be14a21d7f08722028b73f6e2ee6 | -> S-Meter -> improved layout for mobile |
Previous versions
Date | # | MD5 | Notes |
---|---|---|---|
10.03.25 | 131 | 9b9eecba8059e5ff8334e760606a9526 | -> CW feature panel -> [IF-Shift] control |
07.03.25 | 130 | 3de1aed9241cf93b4a2b8cf80671e1f1 | -> region 2 bandplan -> cyberpunk theme |
03.03.25 | 125 | 84436037658a8c7da9fd0da48e525a31 | -> Panadapter integration |
28.02.25 | 123 | 7844dd17d4efabdcf2e56df33fc8fbcb | -> RF meter plot fixed |
27.02.25 | 122 | 9258c1948f5aac7c8d4801caf5b3786b | -> Notch Filter -> UI fixes |
26.02.25 | 121 | a6836ce88cb61291f70de7d0d60e576c | -> TX Bandwidth control -> Quicksplit button |
26.02.25 | 119 | 970f5f1f8337fbcbf3bd044cef9abe30 | -> menu bug fixed |
25.02.25 | 118 | decd0fbbcac709473214b63d375ca821 | -> added FLRig emulation |
18.02.25 | 116 | 56dd18d2be909899de57e4930b3df2be | -> first release |
Installation
You will need Java version 21 or higher
- Linux: install via package manager (e.g. openjdk-21-jre/openjdk-21-jdk package)
- or OpenJDK build from Adoptium (Winows/Linux/macOS) https://adoptium.net/temurin/releases
- or OpenJDK build from Microsoft (Winows/Linux/macOS) https://learn.microsoft.com/en-us/java/openjdk/download
The JRE (runtime environment) version is a much smaller download than the JDK.
TIP
Make sure to have the correct java version in your search path:
bash
java -version
Configuration
IMPORTANT
Serial Port speed in the 891 menu must be set to 38400 bps!
Configure CAT RATE setting in the 891 menu:
05-06 CAT RATE 38400 bps
Windows: Make sure to have the Yaesu USB COM port drivers installed.
Linux: Serial port access is limited to certain users and groups in Linux. Make sure your user is in the dialout group. On Raspberry Pi OS this group should be assigned by default.
bash
# check if user is in group:
groups <username>
# if you do not see the dialout group, add it to your user.
# >>> make sure to logout and login again for the changes to become effective!
sudo usermod -a -G dialout <username>
Without the correct group assignment you might still be able to see the ports - but you will be unable to connect. Depending on your distro you might need additional user groups. More information here (Paragraph 2). Note that on recent Linux distros (e.g. Mint) there might be problems caused by brltty which is installed by default and needs to be removed (see here). For testing purposes you can also try to run the application with sudo to determine if any connection problems are caused by user group permission issues.
Run application
Extract the downloaded zip file and run the application from the command line:
bash
java -jar 891ctrl.jar
After the application started, open the interface in your browser:
Configure the com port on the settings page:
Select the Enhanced Com Port in the table. The application will write the settings to a file 891ctrl.properties and use this configuration on next startup.
On successful connect the 891 LCD screen will blink.
Manual com port configuration
Details
Check the application startup log for the list of available serial ports:
bash
...
SerialService : name=COM3 | systemPortPath=\\.\COM3 | portLocation=0-0.4 | portDescription=Enhanced Com Port | descriptivePortName=Silicon Labs Dual CP2105 USB to UART Bridge: Enhanced COM Port (COM3)
SerialService : name=COM4 | systemPortPath=\\.\COM4 | portLocation=0-0.5 | portDescription=Standard Com Port | descriptivePortName=Silicon Labs Dual CP2105 USB to UART Bridge: Standard COM Port (COM4)
...
Edit 891ctrl.properties file to configure the serial port (Enhanced Com Port).
bash
# windows
serial.comPortName=COM3
# linux
#serial.comPortName=ttyUSB0
Setup as systemd service
Details
You can install 891ctrl to run headless on a raspberry pi. For portable operation just open a wlan hotspot on your phone and have the raspi wireless connect to this hotspot (You don't need internet access for this)
The following instructions assume your username is pi and the application is extracted to /home/pi/891ctrl . Adjust user home directory and installation directory if necessary.
Create a file 891ctrl.sh in directory /home/pi/891ctrl/ :
bash
#!/bin/bash
/usr/bin/java -jar 891ctrl.jar > app.log 2>&1
Make it executable:
bash
chmod +x 891ctrl.sh
Create a file 891ctrl.service :
bash
[Unit]
Description=891ctrl
After=network.target
[Service]
ExecStart=/home/pi/891ctrl/891ctrl.sh
Restart=always
WorkingDirectory=/home/pi/891ctrl
[Install]
WantedBy=multi-user.target
Install the service :
bash
# install service file
sudo cp 891ctrl.service /etc/systemd/system/891ctrl.service
# enable / disable service (autostart)
sudo systemctl enable 891ctrl
# start / stop / restart service
sudo systemctl start 891ctrl
# check service status
systemctl status 891ctrl
Check the logs:
bash
tail -f -n 200 /home/pi/891ctrl/app.log
The HTTP server binds to the local network interface by default. You can customize this by adding a file application.properties to the local directory.
bash
# bind to all interfaces
server.address=0.0.0.0
WARNING: There is no access control, so make sure you do not expose this interface to the internet! This feature is not intended to be used for remote operation.
Feature description
Bandplan
Displays information for the current band and frequency. Click on the bar to change your VFO. lock segment will keep your VFO within the boundaries of the current part of the bandplan. The second bar shows overview over the full sw spectrum: red color are amateur radio bands, orange color are radio broadcast SWL bands. Bandplan region can be changed in the config panel.
Menu Settings
Allows to edit the configuration data for nearly all menu entries of the 891. Red value indicates non-default setting for this entry. Bookmark an entry with the star icon. The bookmarks toggle on top lets you filter just for bookmarked entries. Search for a specific setting with the text box entry.
Memory
Just a simple frequency store. All entries are stored in localstorage of the browser. There is no integration to the frequency store of the 891. Use the + button on top of the table to add the current frequency. Use the play button to load frequency and mode into VFO.
Meter
Prototype for visualization of the RF level meter. Screenshot shows FT8 signals.
DVS
Allows you to use the DVS Voice Memory feature without the FH-2 Remote Control Keypad. Make sure to read the general feature description of DVS in the 891 Advance Manual first.
Important
In order to use the internal voice keyer of the 891 make sure to enable the REC SETTING screen:
Menu 05-11 REC SETTING - Set to ENABLE
The PB option toggle on the REC screen is important when using the DVS feature:
- Disabled: Play recording via monitor
- Enabled: Transmit the recording & Monitor Playback
Unfortunately it seems not possible to toggle PB via CAT, so you have to do this manually.
It is recommended to assign the PB option from the REC screen to one of the A/B/C function keys when using this feature.
Numbers
Select the DVS slot for playback or recording
FAST button integration
Use the FST button on the 891 microphone to start and stop the playback
Record
Click RECORD button and press PTT to start the recording for the currently selected DVS slot. Click the STOP button to stop the recording. TIP: Instead of PPT use VOX to start record to avoid the PTT click sound on the recording when using the stock microphone.
Microphone Equalizer
This popup is available for the mic equalizer and speech processor. The dotted lines are markers for 1,2,3 kHz. Presets are recommended values from various posts which I found in the internet.
My experience after some SSB listening tests with the 891 (+attenuator) connected to a rx-SDR: There is almost no audible improvement of the signal when using the EQ with the stock microphone. However, it is easy to build a microphone adapter (see here) and connect a proper microphone (I tested with a Zoom H1 microphone and it really improves modulation). I mostly do portable operation right now - so I do use the stock microphone anyway and don't care about the Mic EQ.
CW
Battery estimation
There is a battery icon in the header bar with an estimation of remaining battery capacity. Click on the icon to reset. The calculation is based on the measured time of the 891 being either in RX or TX mode (SSB only). This feature is in alpha state.
FLRig emulation
A simple FLRig XMLRPC endpoint in 891ctrl allows to connect FLdigi & WSJT-X. Supported operations: frequency, mode & split operation. CAT PTT is not supported (yet), you will have to use VOX or serial PTT.
WSJT-X
- Settings -> Radio -> Rig select "FLRig".
- In field "Network Server" enter localhost:8910
- Split operation is supported
- Tested with version 2.7.0
FLdigi
- Configure -> Config Dialog -> Rig Control -> flrig
- check "Enable flrig xcvr control with fldigi as client"
- addr: 127.0.0.1 Port 8910
- Tested with version 4.2.0.6
I use the xggcomms Digimode-3-Yaesu connector for digi modes - it works well on windows and linux.
Panadapter integration
You just need a T/R switch (I use the MFJ-1708B-SDRS) and a sdr stick.
891ctrl can connect to a rigctl server for panadapter integration. The integration was optimized to work with SDR++ (sdrplusplus). This opensource multiplatform application supports various SDRs (I use RTL-SDR Blog V4 and SDRPlay RSP-1A). You don't need to install any additional rigctl software, 891ctrl will connect to the application directly.
For portable operation I tested the feature on a Pi 400 with a small screen (HD). Works well for me - the Pi400 (you will have to compile from source for raspi arm 64 bit) seems fast enough to run sdrpp with a rtlsdr stick.
The feature supports bidirectional frequency synchronization. To enable the integration, create a file application.properties in the working directory of the application:
bash
# enable rigctl
feature.rigctl=true
# default ip is localhost
#rigctl.ip=localhost
# optional second ip for portable operation
#rigctl.ip2=localhost
# optional port
#rigctl.port=4532
# poll interval in seconds (sync freq from sdrpp to 891ctrl)
# 0 to disable polling. 1 is default
#rigctl.poll_interval=1
Start the Rigctl Server Module in the sdrpp application:
In case you don't see this feature in the side panel, enable it in the Module Manager. I recommend to enable 'Listen on startup'.
When the feature is enabled in application.properties, 891ctrl it will try to connect to rigctl.ip (or rigctl.ip2) when starting. The UI will display a red icon with two horizontal arrows in the header bar on successful connect. This indicates that the application is connected to sdrpp. When you click the icon it will turn yellow, indicating that the sync is paused. This is helpful when you want to scan on sdrpp but keep the 891 on frequency.
Notes on the sync:
- 891 -> sdrpp : Frequency and Mode are synchronized in realtime. Bandwidth sync is not supported (yet)
- sdrpp -> 891 : 891ctrl is polling the frequency from sdrpp in one second intervals. You can disable this direction by setting the application property to zero. There is a five seconds delay after initial connect before this sync direction is enabled (to prevent update problems). Mode or bandwidth sync is not supported.
About this project
I bought the FT-891 as my first rig in 2022 while I was learning for the test. The filter settings, menu structure etc. seemed pretty complicated to operate. Found the excellent CAT documentation from Yaesu and started to write this tool just for fun.
[2025] by DO1ZL. contact via callsign @gmx.net or on the 15 meter band 73!
Suggestions or bugs please report here groups.io topic
Links
Technology & Library credits
Kotlin, Spring Boot, jSerialComm, Vue.js, VueUse, Pinia, Quasar, RSocket, vue3-rsocket, Konva.js, uPlot, Icon by Freepik - Flaticon