Skip to main content...


Dashboard Screenshot

This is my very highly modified and customized fork of MW0MWZ’s Pi-Star software, and I call it “W0CHP-PiStar-Dash”. There are so many large changes, divergences and new features, it merited my own fork/version.

In fact, it’s pretty much its own distribution at this point; especially now that the W0CHP-PiStar-Dash disk/OS images are now bullseye-based; and is now its own beast, so-to-speak.

Table of Contents:

Warnings, Caveats and FAQs

  • Read The FAQs!
  • This code/project is a moving target, has bugs (like any code does) and can be unstable. It also consumes more system resources due to the myriad improvements.
  • If you plan on running my software on a single-core Pi-Zero 1st gen. or very old hardware, be prepared for my software to run terribly slowly. I created this software specifically for modern, multi-core CPU hardware.
  • Read The FAQs again!

Getting Help/Support

  • Do NOT ask for support for W0CHP-PiStar-Dash on any official or unofficial Pi-Star support page/forum/medium/etc. This is not Andy’s (MW0MWZ) Pi-Star software!
  • Before you ask for help, read how to properly ask for help.
  • Some really great users, fans and contributors of W0CHP-PiStar-Dash have setup a Facebook Group and a Discord Server to get community support, etc. These are the only official online support mediums for my software.
  • XLX-493 ; Module E is the W0CHP-PiStar-Dash Chat Module. A direct DMR conference to this module/room is bridged with BrandMeister and TGIF Networks; BM: simply call TalkGroup 3170603, and TGIF: simply call TalkGroup 493.
  • Issue / Bug Tracker and Pull Requests / Patches:
    • DO NOT ASK FOR SUPPORT. Repo and issue tracker access is for developers/hackers and contributors only, as well as verified bugs.
    • The issue tracker is NOT for:
      1. Support requests
      2. Feature requests
      3. Other topics not germane to bugs, issues, etc.
    • You may be directed to file an issue report here by developers when necessary.

Known Issues

  • If you have a first-generation Raspberry Pi Zero (Pi Zero Rev.1.1 armv6l) with the single-core processor (some Zumspots use these boards), and have downloaded my RPi Bullseye disk image, you need to do a couple of things before you can access it:

    1. Install a WiFi config file before you boot the image, or connect it to Ethernet. Network connectivity is required for first boot-up.
    2. Let the image boot and configure for about 30 minutes, otherwise you will not be able to access the dashboard.

    If you fail to do these things, you will get a “502 Bad Gateway” error when attempting to access the dashboard.

  • If you have a DVmega EuroNode or the like, and install my NanoPi NEO Bullseye disk image on it, you will likely lose all wireless functionality (Ethernet still works, however). This is because the DVmega folks create their own older Buster image, tailored to their custom hardware. If you still want to use my software on DVMega hardware, you absolutely can; and it’s best to use the existing hotspot installation method, which will leave the operating system alone as the older Buster version and wireless functionality will remain intact.

Installing W0CHP-PiStar-Dash

Now that you’ve been adequately informed of the rules, caveats and the risks, keep reading to learn how to install W0CHP-PiStar-Dash.

There are two methods of installation…

  1. Installation on an existing Pi-Star hotspot
  2. Installation via a disk image

Installing W0CHP-PiStar-Dash on an Existing Pi-Star Hotspot

You need to have a Pi-Star hotspot running at least v4.1.6!1

  1. Make a backup of your configuration if you wish – just in case.

  2. Open an SSH session to your Pi-Star instance.

  3. Run this to familiarize yourself with the available options/arguments:2

    curl -Ls | sudo env NO_SELF_UPDATE=1 bash -s -- -h

    You will be presented with…

    [i] W0CHP PiStar-Dash Installer Command Usage:
      -h,   --help                   :  Display this help text
      -id,  --install-dashboard      :  Install W0CHP dashboard
      -idc, --install-dashboard-css  :  Install W0CHP dashboard
                                   	    WITH custom stylesheet
      -rd,  --restore-dashboard      :  Restore original dashboard
      -s,   --status                 :  Display version status/info
  4. When ready to install, run the above command again with the option/argument you wish…e.g:

    curl -Ls | sudo env NO_SELF_UPDATE=1 bash -s -- -id

    (…to install the dashboard without the W0CHP custom CSS)

  5. When the installer completes, refresh your dashboard home page to see the changes.

You must run the aforementioned commands with the exact syntax. Note the spaces and extra -- (dashes), etc. Otherwise, the commands will fail.

Installing W0CHP-PiStar-Dash from a Bullseye-based Disk Image

The W0CHP-PiStar-Dash disk images use “Bullseye” as the core operating system; far newer and better than the legacy “Buster”-based OS that Pi-Star uses.

The Bullseye disk images are ready-to-go; with W0CHP-PiStar-Dash installed.

Raspberry Pi Disk Image:

Raspberry Pi Disk Image Download: WPSD_RPi_Latest.img.xz (804MB compressed; 2.8GB decompressed)

Orange Pi Zero Disk Image:

Orange Pi Zero Disk Image Download: WPSD_OrangePiZero_Latest.img.xz (497MB compressed; 2.6GB decompressed)

Nano Pi Neo Disk Image:

Nanook Neo Disk Image Download: WPSD_NanoPiNeo_Latest.img.xz (790MB compressed; 2.7GB decompressed)

SHA-256 Checksums for Image Files:


You will need an SD card of at least 4GB to install these disk images.

The setup of the Bullseye image is similar to that of Pi-Star’s:

  1. Download the image.

  2. Use a tool such as Balena Etcher to write the image to your SD-Card. This tool will automatically decompress the .xz file as well.

  3. Optional: Use my WPA Config File Generator to automatically connect the dashboard to your WiFi…

  4. Otherwise: After about 5+ minutes post-bootup, you can connect to the “Pi-Star Setup” WiFi network to login to the dashboard and configure your hotspot after it’s booted…

  5. Insert the SD-Card into your hotspot and bootup!

  6. The default login is;

    User: pi-star

    Password: raspberry

Important Info for First Bootup:

  1. When first booting from the Bullseye-based disk image, go grab a coffee, drink, etc. and let the file-system auto-expand and the rest of the system initialize. Be patient.
  2. When installing from the Bullseye-based disk image, it’s a best practice (and better) to run an update before setting up or making configuration changes to your hotspot. This ensures that setup/configuration changes you make are the most tested and up-to-date.

Updating W0CHP-PiStar-Dash

Once you install W0CHP-PiStar-Dash, it will automatically be kept up-to-date with any new features/versions/etc. This is made possible via the native, nightly Pi-Star updating process.3

You can also manually invoke the update process via the dashboard admin section (Admin -> Update), or by command line:

sudo pistar-update

Uninstalling W0CHP-PiStar-Dash

If you installed my software over an existing Pi-Star installation, it’s super-simple…

  1. Run:

    sudo WPSD-Installer -rd

    …And the original Pi-Star Dashboard will be restored. Not sure why anyone would want to do this, though. 🤷‍♂️

Features, Enhancements and Omissions (not an exhaustive list)

Functionality Features

  • Full APRSGateway Support: Selectable APRS Data Sharing with specific modes.
  • Full DGId Support.
  • “Live Caller” screen; similar to a “virtual Nextion screen”; displays current caller information in real-time.
  • Current/Last Caller Details on Main Dashboard (name/location, when available).
  • Talkgroup Names display in target fields (Brandmeister DMR, NXDN and P25 support only).
  • YSF/NXDN/P25/M17 link managers gives the ability to change links/rooms/reflectors/TGs on-the-fly, rather than going through the configuration page.
  • DMR Network Manager allows instant disabling/enabling of configured DMR networks/masters; and fast switching of XLX reflectors and modules. Handy for “pausing” busy networks, talkgroups, timeslots, etc.
  • Full M17 Protocol Support. (See M17 Notes below…)
  • BrandMeister Manager revamps galore:
    • Now displays connected actual talk group names.
    • Connected dynamic talk groups now display idle-timeout time (due to no TX).
    • Added ability to mass-drop your static talk groups; and mass re-add the previously linked static talk groups.
    • Added ability to batch add/delete up to 10 static talk groups at a time.
  • TGIF Manager; now displays connected actual talk group names. (NOTE: Since TGIF has moved to a new platform with no complete API available, this currently does not work until TGIF’s API is made available.)
  • “Instant Mode Manager” added to admin page; allows you to instantly pause or resume selected radio modes. Handy for attending nets, quieting a busy mode, to temporarily eliminate “mode monopolization”, etc.
  • “System Manager” added to admin page; allows you to instantly:
    • Disable / Enable the intrusive and slow Pi-Star Firewall.
    • Disable / Enable Cron, in order to prevent updates and Pi-Star services restarting during middle-of-the-night/early AM operation.
  • Ability to configure POCSAG hang-time from the config page.
  • Native Nextion screen support built-in; no futzing around with Nextion drivers/scripts.
  • Selectable DMR Roaming Beacon Support: Network or Interval Mode (or disabled) - for actual repeaters only.

User Interface / Design Features

  • Updated user interface elements galore, styling, wider, bigger, updated fonts, etc.
  • Optional “Simple View”; shows only activity: no mode status, hardware status, etc. Just activity data. Accessed via http://your-hotspot-url/simple/
  • Country-of-origin flags for callsigns.
  • Improved and graphical CSS/color styling configuration page; easily change the look and feel of the dashboard.
  • User-Configurable number of displayed Last Heard dashboard rows (defaults to 40, and 100 is the maximum).
  • User-Configurable font size for most of the pertinent dashboard information.
  • Reorganized and sectioned configuration page for better usability.
  • System process status reorganized into clean grid pattern, with more core service status being displayed.
  • User-Configurable 24 or 12 hour time display across the dashboard.
  • Connected FCS and YSF reflector names and numerical ID both displayed in dashboard left panel.
  • Additional hardware, radio and system information displayed in top header; which can be toggled.
  • Admin page split up into logical sub-sections/sub-pages, in order to present better feedback messages when making changes.
    • Note: Last-Heard and other dynamic tables are hidden in the admin sections by default, allowing users to focus on the tasks-at-hand and their outputs. The Last-Heard data can be toggled in these areas, however.

Features in Official Pi-Star Which are Intentionally Omitted in W0CHP-PiStar-Dash

  • Upgrade notice/nag in header (unnecessary and a hacky implementation). This has been replaced by my own unobtrusive and configurable dashboard update notifier; displayed in the upper-right hand side of the top header.
  • Custom BannerH2 (etc.) text options have been removed (added clutter and I never used it). Instead, the hostname is displayed in the browser title.
  • “GPS” link in Call Sign column of dashboard (superfluous and unreliable).
  • CPU Temp. in header; when CPU is running “cool” or “normal” recommended temps, the cell background is no longer colored green. Only when the CPU is running beyond recommended temps, is the cell colored orange or red.
  • No reboot/shutdown nag screen/warning from admin page (Superfluous; you click it, it will reboot/shutdown without warning.).
  • Yellow DMR Mode cell in left panel when there’s a DMR network password/login issue (poor/inaccurate and taxing implementation, and can confuse power users that utilize my Instant Mode Manager, where the default cell is amber colored for paused modes [color is user-configurable].). Instead, the actual network name is highlighted in red when there’s a login issue.

Notes about CSS, and custom CSS you may have previously applied

These notes only apply to installations that used my installation script; not the disk images.

  1. When using the -id option, the “normal” Pi-Star colors are used, and no CSS is installed. Any custom CSS you may have had, is removed but backed up. See bullet #4 below.

  2. When using the -idc option, the W0CHP CSS is installed, and any of your custom CSS settings before installing the W0CHP dashboard, are backed up in the event you want to restore the official dashboard (see bullet #4). This is done because the CSS in the official Pi-Star is incompatible. You can still manually map/change your CSS back when running W0CHP-PiStar-Dash (see bullet #4 for details).

  3. If you are already running W0CHP-PiStar-Dash, AND you have custom or W0CHP-PiStar-Dash CSS, no CSS changes, no matter which option you run this command with.

  4. When using the -id option, your custom CSS settings are backed up (in the event you want to revert back to the official dashboard – see bullet #6), and the W0CHP dashboard uses the standard Pi-Star colors. This means that if you want your previous custom CSS applied to the W0CHP dashboard, you will need to manually customize your colors; You can reference the color values you had previously used, by viewing the backup file of your custom CSS…

  5. …the reason for bullets #4 and #1, is because the W0CHP dashboard is vastly different than the official upstream version (completely different CSS mappings). Since this is for my personal use, I haven’t added any logic to suck-in the user CSS values to the new mappings.

  6. If you had customized CSS settings before installing the W0CHP dashboard, they will be restored when using the -rd option.

  7. You can at any time start over and reset to the “normal” Pi-Star colors, by performing a CSS Factory Reset (Configuration -> Advanced -> Tools -> CSS Tool).

  8. If you’d like to start over with the custom W0CHP colors/CSS, you can copy/paste the following values into your /etc/pistar-css.ini.

Notes about M17 Protocol Support

M17 protocol support requires updated MMDVM Modem Firmware or MMDVM HotSpot Firmware of at least v1.6.0. Ergo, you will need to download, compile and install the MMDVM modem firmware or the MMDVM_HS hotspot firmware yourself in order to gain full M17 protocol support.

The MMDVM_HS firmware maintained by G4KLX (v1.6.1+) is backward-compatible with the older MMDVMHost that ships with the original Pi-Star, in the unlikely event you want to uninstall W0CHP-PiStar-Dash.


Not all pages shown here. Note, that you can customize the colors to your preferences…

Main Dashboard

Admin Landing Page

DMR Network Manager

BrandMeister Manager

D-Star Manager

Instant Mode Manager

Live Caller Screen

Moblie Device View

Installation Demo Video


Displayed below, is a live ChangeLog, pulled from the source code repository upon page load. Displayed are the last 20 changes. For the full change history, you will want to browse the entire commit/change history.

51fb73db96 - (20 hours ago) * Minor: improve WiFi config tool performance a tad - Chipster (HEAD -> master)
admin/wifi.php | 13 +------------
admin/wifi/phpincs.php | 11 -----------
2 files changed, 1 insertion(+), 23 deletions(-)

e0515a11ed - (3 days ago) * Minor: spelling tweak - Chipster
index.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

c131a06473 - (4 days ago) * Minor: mobile tooltip colors for config page - Chipster
css/pistar-css-mini.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

8b97bad7ee - (4 days ago) * Minor: ZUMradio 1st boot config logic added - Chipster
admin/configure.php | 1 +
index.php | 23 +++++++++++++++++++----
2 files changed, 20 insertions(+), 4 deletions(-)

2cc9ed8727 - (9 days ago) * Minor: add StarNet Server full editor - Chipster
admin/advanced/fulledit_starnetserver.php | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

1265810ecc - (9 days ago) * Minor: fix config parsing bug. Thanks to Stuart, VA3KWJ, for the issue report and discovery. - Chipster
admin/advanced/config_manager.php | 2 +-
admin/advanced/edit_aprsgateway.php | 9 +++++----
admin/advanced/edit_dapnetapi.php | 9 +++++----
admin/advanced/edit_dapnetgateway.php | 9 +++++----
admin/advanced/edit_dashboard.php | 9 +++++----
admin/advanced/edit_dgidgateway.php | 7 ++++---
admin/advanced/edit_dmr2nxdn.php | 9 +++++----
admin/advanced/edit_dmr2ysf.php | 9 +++++----
admin/advanced/edit_dmrgateway.php | 9 +++++----
admin/advanced/edit_m17gateway.php | 9 +++++----
admin/advanced/edit_mmdvmhost.php | 12 ++++++++----
admin/advanced/edit_nxdngateway.php | 9 +++++----
admin/advanced/edit_p25gateway.php | 9 +++++----
admin/advanced/edit_starnetserver.php | 7 ++++---
admin/advanced/edit_template.php | 8 +++++---
admin/advanced/edit_ysf2dmr.php | 9 +++++----
admin/advanced/edit_ysf2nxdn.php | 9 +++++----
admin/advanced/edit_ysf2p25.php | 11 ++++++-----
admin/advanced/edit_ysfgateway.php | 9 +++++----
admin/advanced/ | 2 ++
20 files changed, 95 insertions(+), 71 deletions(-)

485f0befcd - (2 weeks ago) * Minor: Fix typo in README - Chipster | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

2c1bbcc4f5 - (2 weeks ago) * Minor: README/docs update - Chipster | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)

ec3908f418 - (3 weeks ago) * Minor: Removed superflous head meta tags - Chipster
admin/advanced/calibration.php | 2 --
admin/advanced/config_manager.php | 2 --
admin/advanced/edit_dashboard.php | 2 --
admin/advanced/edit_mmdvmhost.php | 2 --
admin/advanced/edit_starnetserver.php | 2 --
admin/advanced/edit_template.php | 2 --
admin/advanced/edit_template_nosections.php | 2 --
admin/advanced/fulledit_bmapikey.php | 2 --
admin/advanced/fulledit_cron.php | 2 --
admin/advanced/fulledit_template.php | 2 --
admin/advanced/fulledit_template_nosections.php | 2 --
admin/advanced/index.php | 2 --
admin/advanced/jitter_test.php | 2 --
admin/advanced/log_manager.php | 2 --
admin/advanced/security_upgrades.php | 2 --
admin/advanced/services.php | 2 --
admin/advanced/ssh_access.php | 2 --
admin/advanced/tinyfilemanager.php | 2 --
admin/advanced/upgrade.php | 2 --
admin/config_backup.php | 2 --
admin/configure.php | 2 --
admin/live_log.php | 2 --
admin/power.php | 2 --
admin/sysinfo.php | 2 --
admin/update.php | 2 --
config/changelog.php | 2 --
index.php | 2 --
simple/index.php | 2 --
28 files changed, 56 deletions(-)

905976e90c - (3 weeks ago) * Minor: README/docs update - Chipster | 2 ++
1 file changed, 2 insertions(+)

d314a7e609 - (3 weeks ago) * Minor: Update docs/README - Chipster | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)

aae054ad11 - (3 weeks ago) * Minor: improve auto-background task handling (some more) - Chipster
includes/execute-background-tasks.php | 1 +
1 file changed, 1 insertion(+)

d6652a23ab - (3 weeks ago) * Minor: improve auto-background task handling - Chipster | 4 ++--
includes/execute-background-tasks.php | 6 +-----
index.php | 34 +++++++++++++++++-----------------
3 files changed, 20 insertions(+), 24 deletions(-)

685ec85c9c - (3 weeks ago) * Minor: Update README - Chipster | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

defe0d614d - (3 weeks ago) * Minor: improve background maint. task execution - Chipster
includes/execute-background-tasks.php | 8 ++++++++
index.php | 31 ++++++++++++++++++++++++-------
2 files changed, 32 insertions(+), 7 deletions(-)

4149010a88 - (4 weeks ago) * Minior: UI; fix footer link formatting - Chipster
css/pistar-css.php | 1 +
1 file changed, 1 insertion(+)

c81e563952 - (4 weeks ago) * Minor: UI; update dashboard footer w/helpful links. - Chipster
css/pistar-css.php | 6 +++++-
index.php | 5 +++--
2 files changed, 8 insertions(+), 3 deletions(-)

879f1e05d3 - (4 weeks ago) * Minor: Updated README/docs - Chipster | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

4376e958d1 - (4 weeks ago) * Minor: Updated README/docs - Chipster | 5 +++++
1 file changed, 5 insertions(+)

df97759688 - (4 weeks ago) * Minor: tweak padding on monspaced "terminal-like" status screens - Chipster
css/pistar-css.php | 1 +
1 file changed, 1 insertion(+)


Of course, most of the credit goes to the venerable and skilled, Andy Taylor, MW0MWZ, for creating the wonderful Pi-Star software in the first place.

Credit also goes to the awesome Daniel Caujolle-Bert, F1RMB, for creating his personal and customized fork of Pi-Star; as his fork was foundational and inspirational to my W0CHP-PiStar-Dash.

The USA callsign lookup fallback function uses a terrific API,, provided by Josh Dick, W1JDD.

The callsign-to-country flag GeoLookup code was adopted from xlxd… authored by Jean-Luc Deltombe, LX3JL; and Luc Engelmann, LX1IQ. I run an XLX(d) reflector, plus, I was able to adopt some of its code for W0CHP-PiStar-Dash, ergo, I am very grateful. The excellent country flag images are courtesy of Hampus Joakim Borgos.

Credit must also be given to to Kim Heinz Hübel; DG9VH, and Hans-Juergen Barthen; DL5DI, both of whom arguably created the very first MMDVM and ircDDBGateway dashboards (respectively); of which, spawned the entire Pi-Star concept.

The very cool and welcome MMDVMhost log backup/restore and re-application on reboot code, is courtesy of Mark, KN2TOD.

So much credit goes toward the venerable José Uribe (“Andy”), CA6JAU, for his amazing work and providing the game-changing MMDVM_HS hotspot firmware suite, as well as his MMDVM_CM cross-mode suite.

Lastly, but certainly not least; I owe an enormous amount of gratitude toward a true gentleman, scholar and incredibly talented hacker…Jonathan Naylor, G4KLX; for the suite of MMDVM and related client tools. Pi-Star would have no reason to exist, without Jonathan’s incredible and prolific contributions and gifts to the ham community.

  1. W0CHP-PiStar-Dash was not created for single-core and low-powered hardware; such as the first generation RPi Zero, etc. (armv6l). This software will run very slow on under-powered hardware. Please consider yourself warned. Also, please ignore all of the hams on various support mediums saying, “anything more than a Pi Zero is overkill”. These ignoramuses have no idea what goes on under the hood in order to display meaningful info on the dashboard. Hint: it’s a lot, and it’s very resource-intensive. Ignore them…they have no idea what they are talking about. 

  2. Piping to bash/shells/etc. from an online source is controversial (do a google search about it). However it’s convenient, and one can view & inspect the full & actual source code of the installer prior to piping to bash or installing. 

  3. W0CHP-PiStar-Dash occasionally queries the git repository server in order to determine if updates are available. In the spirit of full-disclosure, I wanted to mention this. This is no different than how the official Pi-Star software functions (but doesn’t make this well-known). Additionally, every W0CHP-PiStar-Dash installation has a unique UUID generated for it; for web/repo-traffic capacity planning/analytics, as well as for troubleshooting purposes. You can find the unique UUID within the /etc/pistar-release file. The UUID is derived from the devices’ unique processor serial number:

    $ cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2

Ver. # 4b0cfd0 - Document last updated: 6/2/2023
[ Permanent Link ]