Skip to main content...

W0CHP-PiStar-Dash -- A Custom and Enhanced Pi-Star Dashboard

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.

Table of Contents:

The Rules and Caveats – IMPORTANT

  • I really don’t want to regret publishing my open source software, only to be bombarded by inept hams who need hand-holding. I don’t have the time, patience nor desire to help the clueless. So PLEASE, do not ask me for support. This is my personal code, that I offer as a gift to power-users and hackers.
    • Anyone asking for support will be ignored, and very likely, torn a new asshole and mocked on this website for not following simple instructions.
    • 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! Users found doing so will be relentlessly mocked on this website.
    • Don’t believe me?
  • Running W0CHP-PiStar-Dash is for the initiated, talented and self-motivated. It is NOT for casual, clueless users/hams.
  • The ONLY person who supports this code, is YOU. Yes, you will need to figure shit out if/when things go awry; on your own.
  • 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.
  • Issue / Bug Tracker and Pull Requests / Patches:
    • DO NOT ASK FOR SUPPORT. Repo and issue tracker access is for developers/hackers and contributors only!
    • The issue tracker is NOT for:
      1. Support requests
      2. Feature requests
      3. Other bullshit not germane to bugs, issues, etc.
  • I do, depending on my mood and availability, offer limited support via ham radio on XLX493 ; Module E. Other users will also be happy to help! A direct DMR conference to this module/room is bridged with BrandMeister and TGIF Networks: Simply call TalkGroup 3170603.

Read This Entire Fucking Page

I cannot stress this enough. Just read the rules above again, and read the entire page.. It’s informative and you’ll learn how to install it, restore the old dashboard, etc. I took the time to write it in order to help you. So read it. This web page is the only form of support I offer (aside from being on XLX493 ; Module E periodically).

Installing W0CHP-PiStar-Dash

Now that you’ve been adequately informed of the rules, caveats and the risks, here’s how to install W0CHP-PiStar-Dash

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 current install; original,
                                       or W0CHP installations.
  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.

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


  1. Run:

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

    …And the original Pi-Star Dashboard will be restored.

Features, Enhancements and Omissions (not an exhaustive list)

Functionality Features

  • Full M17 Protocol Support. (See M17 Notes below…)
  • Full APRSGateway Support: Selectable APRS Data Sharing with specific modes.
  • Full DGId Support.
  • Selectable DMR Roaming Beacon Support: Network or Interval Mode (or disabled).
  • “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 link managers gives the ability to change links/rooms on-the-fly, rather than going through the large (and slow) configuration page.
  • “XLX DMR Link Manager” allows fast switching of XLX reflectors and modules, as well as unlinking from modules to “pause” traffic.
  • Searchable drop-downs for massive host lists in configuration/admin pages. E.g. D-Star Refs., YSF Hosts, XLX Hosts, DMR Hosts, etc.
  • 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 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.
    • Enable / Disable Pi-Star Remote and Pi-Star Watchdog
  • Ability to configure POCSAG hang-time from the config page.

User Interface / Design Features

  • Updated user interface elements galore, styling, wider, bigger, updated fonts, etc.
  • 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 dashboard update notifier; displayed in the upper-right hand side of the top header.
  • “GPS” link in Call Sign column of dashboard (superfluous and unreliable).
  • Selectable Call Sign link to either or (both services suck, and the implementation of this feature is poor and unintuitive. Left the original function linking to
  • 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 (courtesy of F1RMB’s excellent code).

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

  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 -> Expert -> 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 hotspot firmware yourself in order to gain full M17 protocol support.

Please note, that if you uninstall W0CHP-PiStar-Dash, you will need to downgrade the MMDVM modem or hotspot firmware back to its original firmware. For MMDVM HS HAT users, you can simply run the following command:

sudo pistar-mmdvmhshatdowngrade

Failure to downgrade the modem firmware when uninstalling W0CHP-PiStar-Dash will result in a non-functional hot spot, since the official current Pi-Star MMDVMHost binary is not compatible with newer MMDVM firmware.


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

Main Dashboard

Main Admin Landing Page

BrandMeister Manager

Instant Mode Manager

System Manager

Live Caller Screen

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.

7505002138 - (18 hours ago) * Minor: merge upstream bugfix - W0CHP (HEAD -> master)
admin/admin.php | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

63d5413001 - (21 hours ago) * Minor: config manager improvments; now shows current running version - Chipster
admin/expert/config_manager.php | 44 +++++++++++++++++++++++++++++------------
1 file changed, 31 insertions(+), 13 deletions(-)

0eba5cc391 - (23 hours ago) * Minor: improve D-Star Link Manager form validation - Chipster
dstarrepeater/link_manager.php | 4 ++++
1 file changed, 4 insertions(+)

7f117665f1 - (27 hours ago) * Minor config manager bugfix - Chipster
admin/expert/config_manager.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

cea3bde738 - (27 hours ago) * Merge branch "master" of Chipster/W0CHP-PiStar-Dash - Chipster
05742ec516 - (2 days ago) * Minor: mobile view tweaks - Chipster
mmdvmhost/functions.php | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)

546f4f7976 - (2 days ago) * Minor: mobule view tweaks - Chipster
mmdvmhost/lh.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

c16914f195 - (2 days ago) Update "config/messages.php" - W0CHP
config/messages.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

e053b19419 - (2 days ago) Update "mmdvmhost/live_caller_table.php" - W0CHP
mmdvmhost/live_caller_table.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

be443e51c8 - (3 days ago) * Minor: side panel ircDDB status tweak - Chipster
mmdvmhost/repeaterinfo.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

ab6d0a6215 - (4 days ago) * Minor bugfixes - Chipster
admin/configure.php | 11 ++++++-----
mmdvmhost/live_caller_table.php | 2 +-
2 files changed, 7 insertions(+), 6 deletions(-)

847c188dd4 - (5 days ago) * Minor: tweak configure page to not scroll WiFi config section - Chipster
admin/configure.php | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

ee1f3f2612 - (5 days ago) * Minor: tweak DMR roaming becon status field - Chipster
mmdvmhost/repeaterinfo.php | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

0ef6a14699 - (6 days ago) * Intermediate bug fix: addressed issue where D-Star traffic was not displayed on dashboard - Chipster
mmdvmhost/functions.php | 19 +++++++++++++------
mmdvmhost/lh.php | 4 ++--
2 files changed, 15 insertions(+), 8 deletions(-)

aab2cd8c10 - (7 days ago) * Minor: backend tweaks - Chipster
mmdvmhost/functions.php | 32 +++++++-------------------------
1 file changed, 7 insertions(+), 25 deletions(-)

0d8f5f46ce - (7 days ago) * Minor: improved hardware/software spec caching - Chipster
admin/sysinfo.php | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

413a543367 - (7 days ago) * Minor: config page improvments and logic tweaks - Chipster
admin/configure.php | 50 ++++++++++++++++++++++----------------------------
admin/expert/index.php | 28 ++++++++++++++++++++++------
2 files changed, 44 insertions(+), 34 deletions(-)

00850fe422 - (8 days ago) * Minor: updated Select2 JS libs for making huge dropdown lists more intuitive. - Chipster
admin/configure.php | 2 +-
index.php | 4 +-
js/select2/css/select2.css | 196 ++++---
js/select2/css/select2.min.css | 2 +-
js/select2/js/i18n/af.js | 2 +-
js/select2/js/i18n/ar.js | 2 +-
js/select2/js/i18n/az.js | 2 +-
js/select2/js/i18n/bg.js | 2 +-
js/select2/js/i18n/bn.js | 2 +-
js/select2/js/i18n/bs.js | 2 +-
js/select2/js/i18n/ca.js | 2 +-
js/select2/js/i18n/cs.js | 2 +-
js/select2/js/i18n/da.js | 2 +-
js/select2/js/i18n/de.js | 2 +-
js/select2/js/i18n/dsb.js | 2 +-
js/select2/js/i18n/el.js | 2 +-
js/select2/js/i18n/en.js | 4 +-
js/select2/js/i18n/eo.js | 3 +
js/select2/js/i18n/es.js | 2 +-
js/select2/js/i18n/et.js | 2 +-
js/select2/js/i18n/eu.js | 2 +-
js/select2/js/i18n/fa.js | 2 +-
js/select2/js/i18n/fi.js | 2 +-
js/select2/js/i18n/fr.js | 4 +-
js/select2/js/i18n/gl.js | 2 +-
js/select2/js/i18n/he.js | 2 +-
js/select2/js/i18n/hi.js | 2 +-
js/select2/js/i18n/hr.js | 2 +-
js/select2/js/i18n/hsb.js | 2 +-
js/select2/js/i18n/hu.js | 4 +-
js/select2/js/i18n/hy.js | 2 +-
js/select2/js/i18n/id.js | 2 +-
js/select2/js/i18n/is.js | 2 +-
js/select2/js/i18n/it.js | 2 +-
js/select2/js/i18n/ja.js | 2 +-
js/select2/js/i18n/ka.js | 2 +-
js/select2/js/i18n/km.js | 2 +-
js/select2/js/i18n/ko.js | 2 +-
js/select2/js/i18n/lt.js | 2 +-
js/select2/js/i18n/lv.js | 2 +-
js/select2/js/i18n/mk.js | 2 +-
js/select2/js/i18n/ms.js | 2 +-
js/select2/js/i18n/nb.js | 2 +-
js/select2/js/i18n/ne.js | 2 +-
js/select2/js/i18n/nl.js | 2 +-
js/select2/js/i18n/pa.js | 3 +
js/select2/js/i18n/pl.js | 2 +-
js/select2/js/i18n/ps.js | 2 +-
js/select2/js/i18n/pt-BR.js | 2 +-
js/select2/js/i18n/pt.js | 2 +-
js/select2/js/i18n/ro.js | 2 +-
js/select2/js/i18n/ru.js | 2 +-
js/select2/js/i18n/sk.js | 2 +-
js/select2/js/i18n/sl.js | 2 +-
js/select2/js/i18n/sq.js | 2 +-
js/select2/js/i18n/sr-Cyrl.js | 2 +-
js/select2/js/i18n/sr.js | 2 +-
js/select2/js/i18n/sv.js | 2 +-
js/select2/js/i18n/te.js | 3 +
js/select2/js/i18n/th.js | 2 +-
js/select2/js/i18n/tk.js | 2 +-
js/select2/js/i18n/tr.js | 2 +-
js/select2/js/i18n/uk.js | 2 +-
js/select2/js/i18n/vi.js | 2 +-
js/select2/js/i18n/zh-CN.js | 2 +-
js/select2/js/i18n/zh-TW.js | 2 +-
js/select2/js/select2.full.js | 1061 +++++++++++++------------------------
js/select2/js/select2.full.min.js | 4 +-
js/select2/js/select2.js | 657 +++++++++++++----------
js/select2/js/select2.min.js | 4 +-
70 files changed, 965 insertions(+), 1098 deletions(-)

10bbefe83b - (8 days ago) * Intermediate: cache HW/platform info instead of polling - Chipster
dstarrepeater/hw_info.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

2ca813d6b9 - (9 days ago) * Minor: improve p25 link status - Chipster
mmdvmhost/functions.php | 3 +++
1 file changed, 3 insertions(+)


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, who arguably created the very first MMDVMHost dashboard, of which, spawned the entire Pi-Star concept.

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 idiot 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 are dumb and 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. 

Ver. # 61d9e11 - Document last updated: 10/2/2022
[ Permanent Link ]