{"id":30656282,"url":"https://github.com/xarantolus/groundstation","last_synced_at":"2026-05-14T20:33:43.551Z","repository":{"id":306674395,"uuid":"1026898589","full_name":"xarantolus/groundstation","owner":"xarantolus","description":" My self-built ground station for receiving satellite signals","archived":false,"fork":false,"pushed_at":"2026-05-08T20:12:31.000Z","size":9944,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-08T22:23:45.490Z","etag":null,"topics":["diamond-d3000","discone-antenna","gnu-radio","raspberry-pi","rtl-sdr","satellite","signal-processing","tle"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xarantolus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-26T21:19:32.000Z","updated_at":"2026-05-08T20:12:35.000Z","dependencies_parsed_at":"2025-12-29T11:09:40.088Z","dependency_job_id":null,"html_url":"https://github.com/xarantolus/groundstation","commit_stats":null,"previous_names":["xarantolus/groundstation"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xarantolus/groundstation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xarantolus%2Fgroundstation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xarantolus%2Fgroundstation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xarantolus%2Fgroundstation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xarantolus%2Fgroundstation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xarantolus","download_url":"https://codeload.github.com/xarantolus/groundstation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xarantolus%2Fgroundstation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33042244,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["diamond-d3000","discone-antenna","gnu-radio","raspberry-pi","rtl-sdr","satellite","signal-processing","tle"],"created_at":"2025-08-31T10:44:03.340Z","updated_at":"2026-05-14T20:33:43.533Z","avatar_url":"https://github.com/xarantolus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ground Station\nThis repository contains code and documentation for my custom satellite ground station. I use it to receive amateur satellite signals and weather satellites, like the following image from the NOAA 19 satellite:\n\n![NOAA APT Image](.github/img/noaa_apt.png)\n\n\n### Hardware Components\nMy ground station uses a [Diamond D-3000 Discone 25-3000 MHz N](https://www.wimo.com/de/d-3000n) antenna, which means that I don't need a rotor.\n\n\u003cimg src=\".github/img/antenna.jpg\" alt=\"Antenna in Action\" style=\"max-height: 500px; height: auto;\" height=\"500\"\u003e\n\nFor digitizing the signal, an [RTL-SDR Blog v4](https://www.ebay.de/itm/276000566513) and [its LNA](https://www.ebay.de/itm/283455455676) (powered via Bias-Tee) are used, connected to the antenna via a \"LMR400 UF UltraFlex Equivalent\" cable.\n\nThe groundstation software of this repo runs on a Raspberry Pi 5 Model B Rev 1.0, with 4 GB of RAM. The SDR is plugged into the Pi on a USB3 port.\n\n### Software Setup\nHere is an approximate description on how to make this software work.\n\n#### Permanent OS Settings\nBasically follow the instructions [for the RTL-SDR Blog V4 here](https://www.rtl-sdr.com/V4/), which also recommends disabling certain drivers. Basically, run the following command and reboot:\n\n```\necho 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf\n```\n\nAdditionally, if the Raspberry Pi is connected via WIFI, set it to auto-reconnect forever:\n\n```\nnmcli connection show # find network\nnmcli connection modify \u003cnetwork name\u003e connection.autoconnect-retries 0 # \u003c- forever\n```\n\nAnd it can also make sense to add these crontab entries (`sudo crontab -e`):\n\n```\n# Remove outdated recordings\n@reboot rm -rf /tmp/recorder*\n0 2 * * * find /tmp -maxdepth 1 -type d -name 'recorder*' -amin +1440 -exec rm -rf {} \\;\n\n# Reboot at night if we lost connection to the NAS\n30 2 * * * if ! ping -c 5 \u003cNAS hostname\u003e \u003e /dev/null 2\u003e\u00261; then /sbin/reboot; fi\n\n# Clear podman containers / build cache - also useful for normal user\n0 0 * * * podman system prune -f --filter \"until=336h\"\n0 0 * * * podman builder prune -f --filter \"until=336h\"\n```\n\n#### Installation\nSome dependencies need to be installed for this all to work:\n\n```\nsudo apt update \u0026\u0026 sudo apt upgrade -y \u0026\u0026 sudo apt-get install -y podman zstd python3 python3-pip rtl-sdr\n```\n\nNext, build the containers for the device:\n\n```\nsudo ./setup.sh\n```\n\nAlso, on the target device (Raspberry Pi), create this directory for GNU Radio:\n```\nmkdir -p /root/.config/gnuradio/prefs\n```\n\n#### Configuration\n\nConfigure a `.env` file to include the following values and put it into the root of this repository:\n\n```\n# Find out how to get one at https://www.n2yo.com/api/\nN2YO_API_KEY=\u003cAPI key\u003e\n\n# Location/coordinates\n# e.g. for Berlin the values would be \"52.518213\" for lat, and \"13.400230\" for lon\nLOCATION_LAT=\u003clatitude\u003e\nLOCATION_LON=\u003clongitude\u003e\n# Altitude above sea level in meters, e.g. \"43\"\n# Can use e.g. https://vividmaps.com/elevation-finder/\nLOCATION_ALT=\u003caltitude of antenna at coordinates in meters over sea level\u003e\n```\n\n\n#### Running the software\n\nIn the main repo directory, run this to actually run the groundstation:\n\n```\nsudo python -m auto.main\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxarantolus%2Fgroundstation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxarantolus%2Fgroundstation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxarantolus%2Fgroundstation/lists"}