{"id":41796651,"url":"https://github.com/jj1bdx/wspr-cui","last_synced_at":"2026-01-25T05:31:31.546Z","repository":{"id":137001070,"uuid":"323646838","full_name":"jj1bdx/wspr-cui","owner":"jj1bdx","description":"WSPR command-line tools","archived":false,"fork":false,"pushed_at":"2024-02-14T03:27:46.000Z","size":907,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-01T23:59:36.842Z","etag":null,"topics":["ham-radio","wsjt","wspr"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jj1bdx.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-12-22T14:20:22.000Z","updated_at":"2024-01-02T05:15:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"626f4ae2-2ecb-4471-ae8a-bf9ee3b79e7a","html_url":"https://github.com/jj1bdx/wspr-cui","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/jj1bdx/wspr-cui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jj1bdx%2Fwspr-cui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jj1bdx%2Fwspr-cui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jj1bdx%2Fwspr-cui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jj1bdx%2Fwspr-cui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jj1bdx","download_url":"https://codeload.github.com/jj1bdx/wspr-cui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jj1bdx%2Fwspr-cui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28744429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T05:12:38.112Z","status":"ssl_error","status_checked_at":"2026-01-25T05:04:50.338Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["ham-radio","wsjt","wspr"],"created_at":"2026-01-25T05:31:31.478Z","updated_at":"2026-01-25T05:31:31.540Z","avatar_url":"https://github.com/jj1bdx.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WSPR CUI code\n\n* Based on wsprd and wsprcode source taken from WSJT-X 2.7.1\n* wsprsimwav derived from wsprsim\n* Code of CUI interface for WSPR TX/RX is at `wspr-trx/`\n\n## Requirements\n\n* Linux or macOS\n* GNU Fortran for compiling WSJT-X code\n  - See the latest WSJT-X source code from [WSJT-X Web Page](https://physics.princeton.edu/pulsar/k1jt/wsjtx.html) for how to build the code in details\n* [Advanced Python Scheduler](https://apscheduler.readthedocs.io/en/3.x/)\n\n## How to build\n\n```\ncd wsprd\nmake clean \u0026\u0026 make\n```\n\n## Code formatting\n\n* [clang-format](https://clang.llvm.org/docs/ClangFormatStyleOptions.html) for C code\n* [fprettify](https://github.com/pseewald/fprettify) for Fortran code\n\nUse `make format` to format the code.\n\n## Tips\n\nNote: tips for only WSPR-2 minute protocol are described unless otherwise noted\n\n### For generating wav file\n\n* Use wsprsimwav for generating a 48kHz mono WAV file, directly usable for transmission over USB transmitter\n* The first and last 20 milliseconds parts of the sound generated by wsprsimwav are faded in/out with the raised-cosine envelope to reduce spurious emission\n\n### For reading wav file by wsprd\n\n* WAV header (first 22 bytes) are ignored\n* Format: fixed to S16\\_LE, 12000Hz, monaural (1 channel)\n* Length: 114 seconds (see `readwavfile()` in wsprd.c) \n\n### .c2 file format by wsprd\n\n* Length per file: 360026 bytes\n* Header: 26 bytes\n  -  Filename: first 14 bytes as char\n  - WSPR type: next 4 bytes as int (2 for WSPR-2, 15 for WSPR-15)\n  - Frequency: next 8 bytes as double in MHz\n* Interleaved IQ signal\n  - Strictly 45000 frames for 120 seconds of 375 frames/second\n  - each frame has two float numbers (4 x 2 = 8 bytes / frame)\n  - frame data: I, and -Q (negated Q)\n\n### For generating .c2 file\n\n* wsprsim generates no noise if SNR is 40 or more\n* wsprsim generates reverse shift signal of `-f` option when processed with the following csdr script\n\n### Make .c2 file audible\n\n* Note: this sound output *does not decode* on WSJT-X\n* Do not use this output for sending WSPR on the air\n\n```\n# upsample from 375Hz to 12000Hz sampling rate (with +-120Hz LPF)\n# then shifting up 1500Hz (for make the signal audible)\n# Output level: -6dB rms \ntail -c +27 201223_0000.c2 | \n    csdr plain_interpolate_cc 32 | \n    csdr bandpass_fir_fft_cc -0.01 0.01 0.001 | \n    csdr gain_ff 16 | csdr shift_math_cc 0.125 | \n    play --buffer=1024 -t raw -e floating-point -b32 -r 12000 -c 2 -q -\n```\n\n### WSPR-2 timing and frequency\n\n* The channel symbol output corresponds to lowest to highest frequencies, from 0 to 3, with 1.46484375 (= 12000/8192) Hz frequency shift, respectively.\n* The channel spacing diagram from the center frequency:\n  - Symbol 0: -2.197265625 Hz ( = -18000/8192 Hz)\n  - Symbol 1: -0.732421875 Hz ( = -6000/8192 Hz)\n  - Symbol 2: +0.732421875 Hz ( = +6000/8192 Hz)\n  - Symbol 3: +2.197265625 Hz ( = +18000/8192 Hz)\n* Transmission rate: 1.46484375 baud = 0.682666667 second/symbol = 8192/12000 second\n* Each transmission contains 162 symbols for 110.592 seconds\n* Each transmission starts +1 second after even UTC minute (e.g., 00:01, 02:01)\n\n## LICENSE\n\nGPLv3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjj1bdx%2Fwspr-cui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjj1bdx%2Fwspr-cui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjj1bdx%2Fwspr-cui/lists"}