Wiki / Reporting a bug

Send us the log,
and we can fix it.

JTTYAF writes a structured event log every time it runs — CAT serial traffic, USB attach events, auto-connect attempts, band changes, every JTTY decode and transmission. Most field bugs land in there. Share it from Settings, drop it into a GitHub issue, done.

1What's in the log

JTTYAF maintains a rolling text file called debug.log in its app data directory. It captures things like:

  • USB attach / detach events and which CAT device matched
  • Auto-connect attempts and any failures
  • CAT serial frames sent to and received from the rig
  • Band and frequency changes
  • Every JTTY RX: decode and JTTY TX: over, with offset and frame count
  • Lifecycle events when the app starts and stops

It's plain text, safe to read, and doesn't include passwords or upload API keys. See the privacy section below if you'd like to skim it before sharing.

2Report a Bug, in the app

The quickest route is built in. In Settings, scroll to the About section and tap Report a Bug. Describe what happened in the box; JTTYAF appends the app version and build, your device model and Android version automatically, then hands the report to your email app or opens a pre-filled GitHub issue — your choice. Nothing is sent until you send it.

Settings · Aboutv0.1.0
JTTYAFv0.1.0 · build 1042
Report a Bugemail · GitHub issue ›
Share logsSend debug.log to email, Discord, Drive… ›
View logsView / share debug.log ›
Settings → About. Report a Bug writes the report; Share logs and View logs get the debug log off the phone.

3Share or view the log

Share logs
Opens the Android share sheet with debug.log attached as a text file. Pick Gmail to email it, or any app that handles attachments — Drive, Discord, Signal, the Files app. Best used right after you've reproduced the problem, so the useful lines are at the end.
View logs
A full-screen viewer that tails the log live. Handy for checking whether CAT is actually talking to the rig, or what the decoder printed about a signal you couldn't copy.

Send it straight to us.

Open a GitHub issue first with Report a Bug, then Share the log to whichever email or cloud-drive shortcut you like and paste the link or attachment into the issue thread so it stays public. The operators are K1AF and N0RC — addresses on QRZ.

4Fallback: Files app

If you'd rather use the file manager, the log and the RX/TX history live on disk at:

/Android/data/radio.ks3ckc.jttyaf/files/debug.log
/Android/data/radio.ks3ckc.jttyaf/files/jtty_all.txt
  1. Open the Files (or My Files) app on your phone.
  2. Navigate to Internal storage → Android → data. On some devices this folder is hidden; tap the three-dot menu and enable Show hidden files or System folders.
  3. Open radio.ks3ckc.jttyaf, then files.
  4. Long-press debug.log and tap Share.

Android 11+ may block /Android/data in Files.

If you can't see radio.ks3ckc.jttyaf in the data folder on a recent Android, install a third-party file manager like Material Files or Solid Explorer — both can read app data folders. Or, easier: use Share logs in Settings, which sidesteps this entirely.

5Fallback: ADB

For developers with a computer and Android's adb tool:

  1. On your phone, enable Developer options → USB debugging.
  2. Plug the phone into your computer with USB, accept the debug-authorization prompt.
  3. From a terminal, confirm the phone is visible:
    adb devices -l
  4. Pull the log (and the history, if the bug is about a decode):
    adb pull /sdcard/Android/data/radio.ks3ckc.jttyaf/files/debug.log .
    adb pull /sdcard/Android/data/radio.ks3ckc.jttyaf/files/jtty_all.txt .
    On multi-device setups, target the phone explicitly with -s <serial>.

6Write the issue

A useful bug report is small — three or four short paragraphs is plenty. The pattern that always works:

  1. What did you do? "Plugged in my IC-705, tapped F1 on 20m at 1500 Hz." Concrete actions in order.
  2. What did you expect to happen? "I expected the rig to key and my CQ to echo in the print."
  3. What actually happened? "PTT keyed, but WSJT-X on the laptop decoded nothing." If anything appeared on screen — error toast, frozen UI, weird waterfall — describe it. A screenshot is gold.
  4. How often? Every time? Only after the phone sleeps? Only with the wide search on? Whatever you can pin down narrows the search.
  5. Attach the log. Grab debug.log right after reproducing the issue — the most recent lines are the most useful. For decode problems, a short WAV of the audio (WSJT-X can save one) is the single most useful thing you can attach.

7Issue template

Copy this into a new issue and fill in the blanks:

## What happened

(One or two sentences describing the bug)

## Steps to reproduce
1. (First thing you tapped)
2. (Second thing)
3. (...)

## Expected vs. actual

Expected: (what should have happened)
Actual:   (what did happen)

## Environment

- JTTYAF version:   (Settings → About, or the release tag you installed)
- Source:          GitHub APK / Google Play / built from source
- Android version: (e.g. 14)
- Device:          (e.g. Pixel 8, Samsung S23, etc.)
- Radio:           (e.g. Icom IC-705 over USB-C)
- Cable:           (USB-C direct / OTG adapter / brand if relevant)
- Contest profile: General / RTTY Roundup / Field Day
- Wide search:     on / off

## Log

(Attach debug.log, or paste the last ~50 lines in a code block.)

8If the app crashed

JTTYAF has no crash-reporting SDK — by design — so when it crashes outright, the trace lives only on your phone. If you have ADB available, the live system log usually contains it right after it happens:

adb logcat -d > logcat.txt

Attach logcat.txt in addition to debug.log. Useful tags to search for: NativeJttyCodec, MicRecorder, UsbAudioDevice, CableConnector, CableSerialPort, UsbHostManager.

9Privacy

The debug log is just text. It captures the operating events of the app, not your personal data. You'll see lines like:

13:42:01 USB attach: vid=10c4 pid=ea60 (Silicon Labs CP210x)
13:42:01 autoConnect attempt #1 → SUCCESS
13:42:02 CAT > FE FE A4 E0 03 FD
13:42:05 band → 20m, freq 14.090 MHz
13:42:18 JTTY RX: 1500 Hz -3 dB 1 frame "CQ K1ABC CQ"
13:42:23 JTTY TX: 1500 Hz 1 frame "K1ABC K1AF"

What's not in there: Cloudlog, QRZ or World Radio League API keys, passwords, audio, photos, contacts, or location. Your callsign and grid square are in there — and so is the text of the QSOs you had, since that's what was on the air — but those are public information for licensed amateurs anyway.

If you'd like to skim or redact before sending, the file is plain UTF-8 text. Any text editor will open it. The full policy is on the privacy page.

Thanks for taking the time.

Real field reports — "this rig, this cable, this band, here's what happened" — are how a brand-new mode gets solid. 73.