A step-by-step guide to setting up Bitscope Server on a Raspberry Pi 2B and configuring it as a systemd service that starts automatically on boot. Covers flashing Raspberry Pi OS, basic Pi configuration via raspi-config, installing the ARMv7 .deb package via dpkg, and writing a custom systemd unit file. Also notes a quirk in the Bitscope server binary that continuously reads stdin, requiring StandardOutput=null in the service file to prevent log spam. Concludes with criticism of Bitscope's chaotic platform support and poorly designed server software.

7m read timeFrom apalrd.net
Post cover image
Table of contents
Prepare the Pi ⌗Install Bitscope Server ⌗Writing a Systemd service for Bitscope Server ⌗Conclusions ⌗

Questions this post answers

How do I run Bitscope Server as a systemd service on Raspberry Pi so it starts on boot?

Create a unit file at /etc/systemd/system/bitscope.service with ExecStart=/usr/bin/bitscope-server, Restart=always, After=network-online.target, and WantedBy=multi-user.target. Set StandardOutput=null to prevent log spam caused by the binary continuously reading stdin and interpreting null as ENTER. Then run sudo systemctl daemon-reload, sudo systemctl start bitscope, and sudo systemctl enable bitscope. Developers running hardware tools on Linux track setup patterns like this on daily.dev.

Why does Bitscope Server spam logs when running as a systemd service on Linux?

Bitscope Server continuously reads stdin waiting for the user to press ENTER to quit. When run as a systemd service, stdin is null, and the binary interprets the null read as an ENTER keypress, then repeatedly prompts for Y or N to confirm quitting. Setting StandardOutput=null in the systemd unit file prevents this from filling log files with garbage output. Hardware engineers dealing with poorly behaved Linux daemons find workarounds like this on daily.dev.

1 Impression