Skip to content

Add Yaesu FTX-1 to the rig list (#931) - #933

Open
patrickrb wants to merge 2 commits into
devfrom
feat/931-yaesu-ftx1
Open

patrickrb wants to merge 2 commits into
devfrom
feat/931-yaesu-ftx1

Conversation

@patrickrb

Copy link
Copy Markdown
Owner

Closes #931.

What

Adds a named YAESU FTX-1(USB) entry to the rig model picker. Until now FTX-1 owners had to try every Yaesu entry until one worked.

Why this profile

A user in Discord (#general, 2026-10-18) confirmed CAT works on the FTX-1 with the existing YAESU FT-891/991(USB) entry plus USB Direct audio. The new entry uses that profile exactly: address 00, 38400 baud, instruction set 2 (YAESU_3_9, 9-digit Yaesu gen-3 CAT). No new CAT code.

I only added the USB variant because that's the one a user confirmed. A DATA-USB variant (set 19, like the 891/991 has) can follow if someone asks for it.

Notes

  • Added at the end of the list. The selected rig is saved as a list index, so adding it anywhere else would quietly change every existing user's rig. RigAddressAssetTest's golden-order list now includes the new entry, and the "last entry" test points at it.
  • New test ftx1_usesTheFt891991UsbProfile checks that the FTX-1 entry's baud, address and instruction set match the FT-891/991(USB) entry.
  • Conflicts with Add QRP Labs QMX via the hamlib backend #925 (QMX), which also adds a line at the end of rigaddress.txt and GOLDEN_ORDER. Whichever merges second needs a quick rebase that keeps both lines, in merge order, and updates the "last entry" test.

Testing

  • I couldn't run Gradle on the agent host: there's no Linux JDK/SDK, and the Windows wrapper fails on the WSL share with IOException: Incorrect function. CI's testDebugUnitTest job is the real check here.
  • I did check with a script that the asset and GOLDEN_ORDER match: 78 entries each, in the same order, with FTX-1 last.
  • Manual test (needs an FTX-1): install the debug APK from this PR, open Settings and pick YAESU FTX-1(USB). The address and baud should fill in as 00 / 38400. Then check CAT frequency readout and PTT.

🤖 Generated with Claude Code

FTX-1 owners had to guess which Yaesu entry works. A user confirmed CAT
works with the FT-891/991(USB) profile (38400 baud, 9-digit Yaesu gen-3
command set), so add a named "YAESU FTX-1(USB)" entry with that profile.

Appended at the end of rigaddress.txt because the selected rig is saved
as a list index; extend the golden-order test and pin the new entry's
profile to the FT-891/991(USB) one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 41.50%. Comparing base (0677e40) to head (4327bed).

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff              @@
##                dev     #933      +/-   ##
============================================
- Coverage     41.51%   41.50%   -0.01%     
  Complexity      252      252              
============================================
  Files           280      280              
  Lines         33993    33992       -1     
  Branches       4034     4063      +29     
============================================
- Hits          14112    14110       -2     
+ Misses        19592    19591       -1     
- Partials        289      291       +2     
Flag Coverage Δ
android 17.63% <ø> (ø)
native 9.85% <ø> (-0.09%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

The last-entry check now compares against the final GOLDEN_ORDER name,
so appending a rig no longer means renaming and rewriting it. The class
javadoc covers the FTX-1 check alongside the IC-7300MK2 ones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@patrickrb

Copy link
Copy Markdown
Owner Author

Review round 1

Claude code-review (high), used as the fallback because Copilot review isn't available on this repo.

# Finding Outcome
1 Only a USB-mode FTX-1 entry is added. There's no DATA-USB twin like the FT-891/991 has (instruction set 19). Left for the maintainer. The PR deliberately adds only the profile a user confirmed works. Whether to add an untested YAESU FTX-1(DATA-USB),00,38400,19 row is a product call.
2 Instruction set 2 (Yaesu39Rig) sends FT-891/991 filter and ATU strings (NA00;SH0120;, AC002;), and nothing checks them against the FTX-1 CAT table. Not changed. The user in #931 reports CAT working with exactly this profile, and there's no FTX-1 hardware here to justify different strings. Whether the RX filter width is right on an FTX-1 is still unverified on hardware and belongs in the manual test.
3 The bundled Hamlib defines RIG_MODEL_FTX1 (Yaesu 51 = 0x41B), so a Hamlib-backed row (Yaesu FTX-1 (Hamlib),41B,38400,26) could handle FTX-1 specifics properly. Left for the maintainer. It's a reasonable addition, but it's another untested entry in an append-only list. Better as a follow-up once someone can try it on an FTX-1.
4 Yaesu39Rig.getName() returns "YAESU FT-891", so an FTX-1 shows up as an FT-891 in logs and the HTTP status page. Not changed. This was already true for every instruction-set-2 row (FT-991 users see the same thing). Fixing it means passing the selected model name into the rig classes, which is outside this PR.
5 The X_isTheLastEntry test has to be renamed and rewritten every time a rig is appended. Fixed. It's now lastEntry_isTheLastGoldenName and compares against the final GOLDEN_ORDER element, so a new rig only touches the asset and GOLDEN_ORDER.
6 ftx1_usesTheFt891991UsbProfile checks baud and instruction set both against literals and against the FT-891 row. Not changed. The literals pin the exact profile the user confirmed (38400, set 2), and the equality checks say what the intent is. If the FT-891 row ever changed, this test should fail and make someone look at the FTX-1 row too.
7 The class javadoc still describes the file as being about the IC-7300MK2 entry. Fixed. Updated to cover the per-rig checks (MK2, FTX-1) and the append-only invariant.
8 Append-only puts the FTX-1 at the bottom of the picker, away from the other Yaesu rows. Left for the maintainer. This applies to every appended rig (MK2, FT-891 Hamlib, etc.). Sorting or grouping the picker by name while keeping the persisted index would be a separate change.

Checked and correct: address 00, 38400 baud and instruction set 2 match the FT-891/991(USB) row; the entry is appended last; GOLDEN_ORDER matches the asset (78 entries); the file ends with a newline.

Merge order: #925 and #946 (QMX) also append to the end of rigaddress.txt and GOLDEN_ORDER. Whichever merges after this one will conflict on those two spots and needs to keep both lines in merge order. With the last-entry test now reading from GOLDEN_ORDER, that test no longer needs editing.

Fix commit: 4327bed

Tests: RigAddressAssetTest (6) and RigNameListTest (8) pass locally via testDebugUnitTest. Not checked on hardware: CAT frequency readout, PTT and filter width on a real FTX-1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant