{"id":13894992,"url":"https://github.com/nonoo/kappanhang","last_synced_at":"2025-07-17T10:31:58.374Z","repository":{"id":50956187,"uuid":"304662836","full_name":"nonoo/kappanhang","owner":"nonoo","description":"Remotely open audio channels and a serial port to an Icom RS-BA1 server (for ex. Icom IC-705 transceiver).","archived":false,"fork":false,"pushed_at":"2021-05-26T20:02:10.000Z","size":56491,"stargazers_count":151,"open_issues_count":2,"forks_count":29,"subscribers_count":23,"default_branch":"main","last_synced_at":"2024-08-07T18:32:12.019Z","etag":null,"topics":["amateur-radio","amateurradio","ham","ham-radio","hamradio","icom","radio","remote-control","rs-ba1","transceiver"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nonoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-16T15:12:58.000Z","updated_at":"2024-07-24T18:45:19.000Z","dependencies_parsed_at":"2022-08-28T13:30:48.035Z","dependency_job_id":null,"html_url":"https://github.com/nonoo/kappanhang","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonoo%2Fkappanhang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonoo%2Fkappanhang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonoo%2Fkappanhang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nonoo%2Fkappanhang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nonoo","download_url":"https://codeload.github.com/nonoo/kappanhang/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226255249,"owners_count":17595859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amateur-radio","amateurradio","ham","ham-radio","hamradio","icom","radio","remote-control","rs-ba1","transceiver"],"created_at":"2024-08-06T18:01:54.888Z","updated_at":"2024-11-25T00:30:27.785Z","avatar_url":"https://github.com/nonoo.png","language":"Go","funding_links":["https://paypal.me/ha2non"],"categories":["Go"],"sub_categories":[],"readme":"# kappanhang\n\nkappanhang remotely opens audio channels and a serial port to an Icom RS-BA1\nserver. The app is mainly developed for connecting to the Icom IC-705\ntransceiver, which has built-in Wi-Fi and RS-BA1 server. All features of the\nprotocol are implemented including packet retransmission on packet loss.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"demo.gif?raw=true\"/\u003e\u003c/p\u003e\n\nkappanhang currently only supports Linux, but support for other platforms can\nbe easily added if anyone is interested and has the skills (volunteers\nneeded, as I'm only developing the Linux version).\n\nPlease note that the Icom IC-705 (and also the RS-BA1 protocol) does not\nprovide GPS data over IP so it's not possible to get the GPS data stream.\n\n## Compatible hardware/software\n\n- Icom RS-BA1 server software\n- Icom IC-705\n- Icom IC-9700\n- Icom IC-7610\n- Icom IC-785x\n\nSend me an [email](mailto:nonoo@nonoo.hu) if you've tested a new hardware or\nsoftware and it is working with kappanhang.\n\n## Compiling\n\nYou'll need:\n\n- Go installed on your computer. On Ubuntu-like systems, install a recent\n  package `golang`.\n\n- The development package for libpulse installed. On Ubuntu-like systems,\n  this is package `libpulse-dev`.\n\nThen:\n\n```\ngo get github.com/nonoo/kappanhang\ngo install github.com/nonoo/kappanhang\n```\n\nThis will typically install `kappanhang` into `$HOME/go/bin`.\n\n## Required settings on the RS-BA1 server (the transceiver)\n\n- Make sure network settings (on the Icom IC-705 in: `Menu -\u003e Set -\u003e\n  WLAN set -\u003e Remote settings`) are the following:\n  - **Network control** is turned on.\n  - **UDP ports** are on their default values:\n    - Control port: `50001`\n    - Serial port: `50002`\n    - Audio port: `50003`\n  - **Internet access line** is on the default `FTTH` value.\n- Make sure the following settings are set:\n  - **DATA MOD** is set to `WLAN` (on the Icom IC-705 in: `Menu -\u003e Set -\u003e\n    Connectors -\u003e MOD Input -\u003e DATA MOD`)\n  - **CI-V Address** is on the default `A4h` value (on the Icom IC-705 in:\n    `Menu -\u003e Set -\u003e Connectors -\u003e CI-V`.\n\n## Running\n\nYou can get the available command line parameters with the `-h` command line\nargument.\n\nIf no command line arguments are set, then the app will try to connect to the\nhost **ic-705** (ic-705.local or ic-705.localdomain) with the username `beer`\nand password `beerbeer`. You can set the username with the `-u` and the\npassword with the `-p` command line arguments.\n\nHere's a quick video tutorial on how to run kappanhang on a Raspberry Pi:\n\n[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/93hYhXHCVeU/0.jpg)](https://www.youtube.com/watch?v=93hYhXHCVeU)\n\nAfter it is connected and logged in:\n\n- Creates a virtual PulseAudio **sound card** (48kHz, s16le, mono). This can be\n  used to record/play audio from/to the server (the transceiver). You can also\n  set this sound card in [WSJT-X](https://physics.princeton.edu/pulsar/K1JT/wsjtx.html).\n- Starts an **internal rigctld** server. This can be used for controlling the\n  server (the transceiver) with [Hamlib](https://hamlib.github.io/) (`rigctl`)\n  clients. This internal rigctld is needed for more reliable rigctl\n  communication, as the original rigctld is very sensitive to timeouts.\n\n  To use this with for example [WSJT-X](https://physics.princeton.edu/pulsar/K1JT/wsjtx.html),\n  open WSJT-X settings, go to the *Radio* tab, set the *rig type* to `Hamlib\n  NET rigctl`, and the *Network server* to `localhost`.\n- Starts a **TCP server** on port `4531` for exposing the **serial port**.\n  This can be used for an externally launched `rigctld` for example.\n\n### Virtual serial port\n\nIf the `-s` command line argument is specified, then kappanhang will create a\n**virtual serial port**, so other apps which don't support Hamlib can access\nthe transceiver directly. Look at the app log to find out the name of the\nvirtual serial port. It will be something like `/tmp/kappanhang-IC-705.pty`\n(the server's name appended to the string *kappanhang*). After the virtual\nserial port is created, the command specified with `-o` will be ran, which is\n`socat /tmp/kappanhang-IC-705.pty /tmp/vmware.pty` by default. Running the\ncommand can be disabled with `-o -`. The command is only executed once, as the\nvirtual serial port will stay opened even if the RS-BA1 server disconnects.\nI use this command to link a COM port in a Windows OS running in VMware to\nthe virtual serial port, so I can use the original RS-BA1 software remote\ncontrol GUI.\n\n### Status bar\n\nkappanhang displays a \"realtime\" status bar (when the audio/serial connection\nis up) with the following info:\n\n- First status bar line:\n  - `MON/REC`: current status of the audio monitor (see the *Hotkeys* section\n    in this README for more information about this feature)\n  - `filter`: active filter (FIL1, FIL2 etc.)\n  - `preamp`: PAMP0 means the preamp is off\n  - `AGC`: AGC state (F - fast, M - middle, S - slow)\n  - `rfg`: RF gain in percent\n  - `sql`: squelch level in percent\n  - `nr`: noise reduction level in percent\n\n- Second status bar line:\n  - `S meter`: periodically refreshed S meter value, OVF is displayed on\n    overflow, displays TX on transmit (or TUNE)\n  - `freq`: operating frequency in MHz\n  - `TS`: tuning step\n  - `mode`: LSB/USB/FM etc. *-D* indicates data mode\n  - `SPLIT/DUP-/DUP+`: displayed when split/DUP operation is active, the TX\n    frequency is also displayed in split mode\n  - `voltage`: drain voltage of the final amplifier MOS-FETs, updated when a\n    TX/TUNE is over\n  - `txpwr`: current transmit power setting in percent\n  - `swr`: reported SWR (only displayed during TX)\n\n- Third status bar line:\n  - `up`: how long the audio/serial connection is active\n  - `rtt`: roundtrip communication latency with the server\n  - `up/down`: currently used upload/download bandwidth (only considering UDP\n    payload to/from the server)\n  - `retx`: audio/serial retransmit request count to/from the server\n  - `lost`: lost audio/serial packet count from the server\n\nData for the first 2 status bar lines are acquired by monitoring CiV traffic\nin the serial stream. S value and OVF are queried periodically, but these\nqueries/replies are filtered from the serial data stream sent to the TCP\nserial port server and to the virtual serial port.\n\n`retx` and `lost` are displayed in a 1 minute window, which means they will be\nreset to 0 if they don't increase for 1 minute. A `retx` value other than 0\nindicates issues with the connection (probably a poor Wi-Fi connection), but\nif `loss` stays 0 then the issues were fixed using packet retransmission.\n`loss` indicates failed retransmit sequences, so packet loss. This can cause\naudio and serial communication disruptions.\n\nIf status bar interval (can be changed with the `-i` command line\nargument) is equal to or above 1 second, then the realtime status bar will be\ndisabled and the contents of the last line of the status bar will be written\nas new console log lines. This is also the case if a Unix/VT100 terminal is\nnot available.\n\n### Hotkeys\n\n- `q` (quit): closes the app\n- `l` (listen): toggles audio stream playback to the default sound device.\n  This is useful for quickly listening into the audio stream coming from the\n  server (the transceiver).\n- `space`: toggles PTT and audio stream recording from the default sound\n  device. You can transmit your own voice using a mic attached to your\n  computer for example.\n\nSome basic CAT control hotkeys are also supported:\n\n- `t`: toggles the tune process\n- `+`: increases TX power\n- `-`: decreases TX power\n- `0` to `9`: set TX power in 10% steps\n- `)`: set TX power to 100%\n- `[`, `]`: decreases, increases frequency\n- `{`, `}`: decreases, increases tuning step\n- `;`, `'`: decreases, increases RF gain\n- `!` to `(` (shift + numbers): set RF gain in 10% steps\n- `:`, `\"`: decreases, increases squelch level\n- `,`, `.`: decreases, increases noise reduction level\n- `/`: toggles noise reduction\n- `n`, `m`: cycles through operating modes\n- `d`, `f`: cycles through filters\n- `D`: toggles data mode\n- `v`, `b`: cycles through bands\n- `p`: toggles preamp\n- `a`: toggles AGC\n- `o`: toggles VFO A/B\n- `s`: toggles split/DUP+- operation\n\n## Icom IC-705 Wi-Fi notes\n\nNote that the built-in Wi-Fi in the Icom IC-705 has **very limited range**,\nand **sensitive to interference**. If you see a lot of retransmits in the log,\nor packet loss, then:\n\n- Place the IC-705 close to your Wi-Fi AP/router, or use a Wi-Fi range\n  extender device\n- Make sure the Wi-Fi bandwith is set to max. 20Mhz in the Wi-Fi router (see\nexplanation [here](https://superuser.com/questions/542191/does-moving-my-router-from-20mhz-to-40-mhz-increase-my-wireless-speed))\n- Try switching Wi-Fi channel on your Wi-Fi router. Only channels 1, 6 or 11\nshould be used (see explanation [here](https://www.metageek.com/training/resources/why-channels-1-6-11.html))\n\nSometimes rebooting the transceiver helps, as the network stack in the IC-705\nis not quite free of bugs. :)\n\n## Contributors\n\n- Norbert Varga HA2NON [nonoo@nonoo.hu](mailto:nonoo@nonoo.hu)\n- Akos Marton ES1AKOS\n- W6EL (passcode algorithm)\n\n## Donations\n\nIf you find this app useful then [buy me a beer](https://paypal.me/ha2non). :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonoo%2Fkappanhang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnonoo%2Fkappanhang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnonoo%2Fkappanhang/lists"}