{"id":23855570,"url":"https://github.com/andreaspeters/ptc-go","last_synced_at":"2026-05-27T15:30:15.745Z","repository":{"id":57641320,"uuid":"435181626","full_name":"andreaspeters/ptc-go","owner":"andreaspeters","description":"TEST","archived":false,"fork":false,"pushed_at":"2021-12-05T14:17:21.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-03T00:58:17.676Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreaspeters.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":"2021-12-05T13:57:24.000Z","updated_at":"2021-12-05T14:17:01.000Z","dependencies_parsed_at":"2022-09-05T07:41:25.471Z","dependency_job_id":null,"html_url":"https://github.com/andreaspeters/ptc-go","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreaspeters%2Fptc-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreaspeters%2Fptc-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreaspeters%2Fptc-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreaspeters%2Fptc-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreaspeters","download_url":"https://codeload.github.com/andreaspeters/ptc-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240152588,"owners_count":19756104,"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":[],"created_at":"2025-01-03T00:58:46.501Z","updated_at":"2026-05-27T15:30:15.666Z","avatar_url":"https://github.com/andreaspeters.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ptc-go - SCS PACTOR modems driver for the Pat Winlink-client\n\n(If you came here through the Pat Wiki, please read the full text!)\n\n## What is this?\n\nThe code in this repository is a plug-in (you may also call it a\n\"driver\") to support PACTOR modems manufacted by SCS in the\n[Pat Winlink-client](http://getpat.io/). It does this by communicating\nwith the PACTOR modems using the WA8DED hostmode, enabling full binary transparency.\n\nNote that this is **work in progress**, things may or may not work\nproperly. Use it at your own risk. The code is not feature complete yet. It should\nbe usable enough to send Winlink messages through a PACTOR (or PACKET)\nchannel using a supported PACTOR modem, though.\n\nThe code in this repository is independently developed from Pat\nitself, although in close collaboration. Please do not bother Martin, LA5NTA, with\nquestions concerning this driver. Instead, look [further down](https://github.com/harenber/ptc-go/blob/master/README.md#seeking-help).\n\nAuthor: Torsten Harenberg, DL1THM (initial) with large contributions and bug fixes from @blockmurder. The code in the \"develop\" branch has been written by @blockmurder.\n\n## How to use it\n\n### setup\n\n#### How to get it\n\n\nThe PACTOR support is beta and included in the standard distribution of [Pat](http://getpat.io) since v0.7.0.\n\n#### setup\n\nOnce you have successfully compiled Pat as described above, [configure it](https://github.com/la5nta/pat/wiki/The-command-line-interface#configure). Afterwards you should add an entry to your $HOME/.wl2k/config.json file like this:\n\n```json\n\"pactor\": {\n  \"path\": \"/dev/ttyUSB0\",\n  \"baudrate\": 57600,\n  \"rig\": \"\",\n  \"custom_init_script\": \"/home/pi/ptcinit.txt\"\n},\n```\n\nPath is the tty to your SCS modem. The example here is from Linux and I haven't tested this on any other platform yet.\nThis __custom_init_script__ parameter is completely optional and may\ncontain commands which are send to the modem before switching it to\nWA8DED-mode. It is generally not needed! Examples of commands which\ncould be useful are setting the audio level or any command needed to\nselect the right frequency, if you steer your radio through the\nmodem. Please check the modem's manual for details. You **do not**\nneed to set basic parameters like your callsign with this\nfeature. This is handled by the code.\n\n\n### connect\n\nTo connect to the remote station PJ2A using the defaults set in your\nconfig.json file\n\n```\npat connect pactor:///PJ2A\n```\n\n~~To overwrite one or the other default in the config.json, you may use the following additional parameters~~ deprecated\n\n```\npat connect \"pactor:///PJ2A?host=/dev/ttyUSB0\u0026baud=57600\"\n```\n\n(new feature introduced in v2.1) In addition to __custom_init_script__, you can set\nadditional commands to the PTC on the commandline with the init parameter. For example:\n\n```\npat connect \"pactor:///PJ2A?init=PTCH%2031\"\n```\n\nTo prevent the shell to interpret any character, I highly recommand you \nput the URL into quotation marks. Remember: these commands are sent to your\nPTC. Depending on what they do, this changed the behaviour of your modem\nalso in future connectios. Refer to the SCS handbook for details.\n\nA successful connect looks like this:\n\n```\npi@pi2 ~/gopackages/src/github.com/la5nta/pat $ ./pat connect pactor:///PJ2A\n2018/04/22 13:16:21 Connecting to PJ2A (pactor)...\n2018/04/22 13:16:23 Connected to PJ2A ()\nPJ2A - Linux RMS Gateway 2.4.0 Oct 24 2017 (FK52nd)\n\nWelcome to the PJ2A Winlink 2000 RMS Gateway. VERONA Radio Club, Curacao, Dutch Caribbean\n\nINFO: Host Name sandiego.winlink.org, Port 8772\nConnected\n[WL2K-5.0-B2FWIHJM$]\n;PQ: ABCDEFGH\nCMS via PJ2A \u003e\n\u003eFF\n;PM: DL1THM P7TVSXXASKRJ 987 SERVICE@winlink.org //WL2K User Notice\nFC EM P7TVSXXASKRJ 1873 987 0\nF\u003e DE\n1 proposal(s) received\nAccepting P7TVSXXASKRJ\nReceiving [//WL2K User Notice] [offset 0]\n//WL2K User Notice: 100%\n\u003eFF\nFQ\n```\n\n#### using Packet radio\n\n(for advanced users only)\n\nYou can change the PTC to use PACKET radio instead of PACTOR by moving\nthe PACTOR channel away from the default channel 31 (Channel is a data\nstream inside the WA8DED protocol). The easiest way to do that is to\nadd a init option to the connect command like for example:\n\n```\n./pat connect \"pactor:///PJ2A?init=PTCH%204\"\n```\n\n\n## Supported hardware\n\nThe code has tested against the PTC-II and -III series of the SCS PTC\nmodems. It should work with USB, serial and Bluetooth connections.\nv2.2.0 brings (finally) support for the Dragon PACTOR-4 series of\nmodems. \n\nDo get that supported, v2.2.0 changes quite a bit:\n\n- the driver speaks now the enhanced CRC Hostmode instead of plain WA8DED hostmode to the modem,\n- the underlying serial library has changed to [this one](https://github.com/albenik/go-serial) supporting  non-standard baud rates.\n\nThe P4 Dragon series use a non-standard baud rate of 829440 baud, so an example config.json for Linux is\n\n```\n  \"pactor\": {\n    \"path\": \"/dev/ttyUSB0\",\n    \"baudrate\": 829440,\n    \"rig\": \"\",\n    },\n```\n\nFor operating systems other than Linux (MacOS and Windows), you need to install the SCS driver and follow their instructions about the baudrate to use.\n\nSupport of the Dragon modems is new and has been followed in [issue #3](https://github.com/harenber/ptc-go/issues/3).\nSwiss PTC modems should be supported as well, see [issue #26](https://github.com/harenber/ptc-go/issues/26).\n\n## What is missing\n\nThere are a lot of features that would be nice to have and which are\nstill under development. Most notably these are:\n\n* listen mode. At the moment, the driver can only call remote station but cannot accept connections.\n* Rig contol through the PTC.\n\nIf you feel you are able to contribute, you are more than\nwelcome. Please comment on the appropreate issues.\n\nFurthermore, tests on non-Linux systems would be appreciated.\n\n## Debugging\n\nSetting an environment variable `pactor_debug=1` will enable some more\ndebug messages. You can set the verbosity level from 1 (little debug output) to 3 (a LOT of debug output).\n\n## Seeking help\n\nThe best place to ask for help is the\n[Pat Google Group](https://groups.google.com/forum/#!forum/pat-users).\n\nThat is true even if you have questions concerning this driver, I (DL1THM) monitor the Pat Google Group as well and will answer there.\n\nOtherwise, feel free to open issues to this repository if you find bugs not reported yet.\n\n## Acknowledments\n\nFirst I wish to thank Martin Hebnes Pedersen, LA5NTA, for developing\nPat, his patience and for his helpful code reviews. Further thanks to my good friend\nBrett Ruiz, PJ2BR, for providing a second station for beta-testing. And thanks to @blockmurder for\nthe testing and patches. Futhermore, I would like to thank the nice folks at SCS for \ntheir support.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreaspeters%2Fptc-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreaspeters%2Fptc-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreaspeters%2Fptc-go/lists"}