Sarah's Forge.Dev
← All Projects
BenshiCommander@SarahRoseLives:~
BenshiCommander
A Flutter app for commanding Benshi Radios
β˜… 0   🍴 0
View on GitHub

πŸ“» Benshi Commander

⚑️ Benshi Commander is a modern, cross-platform app for exploring and programming radios using the @khusmann/benlink protocol.

Credit: Full protocol and reverse engineering credit goes to @khusmann/benlink. This project would not exist without that amazing work!


🚦 Status

  • Current: Can read your radio's entire memory/code plug and export it to CHIRP CSV format over Wi-Fi.
  • In Progress: Write support, in-app and in-browser memory editing, radio reference and RepeaterBook import, and more!
  • UI: Some screens are placeholders for planned features – see below for details.

⚠️ Warning – You Might Brick Your Radio!

🧨 This is experimental software.

  • It talks to your radio at a low level.
  • It may or may not work with your specific device.
  • You assume all risk by using it. I am not responsible for damaged, bricked, or inoperable hardware.

✨ Features

  • 🧠 Reads the Radio's Memory
    • Loads the full channel map ("code plug") from your radio over Bluetooth.
    • Automatically detects device info and channel count.
  • πŸ’Ύ One-Click Export to CHIRP
    • Simple local web server lets you download your entire code plug as a CHIRP-compatible CSV file.
    • No cables or drivers requiredβ€”just connect and go!
  • πŸ”’ Modern Flutter UI
    • Material Design 3 with pretty icons, dark mode, and responsive layout.
  • πŸ”§ Modular Code
    • Protocol logic separated into reusable Dart files.
    • Easy to extend for new commands or radios.

πŸ› οΈ Planned & Upcoming Features

  • πŸ“ Write Code Plug to Radio (coming soon!)
    Save your changes back to the radio, safely.
  • 🌐 In-App/Browser Editor
    Edit channels and settings directly in your browser or in-app before writing.
  • πŸ“‘ RadioReference & RepeaterBook Import
    Easily import repeater/channel lists from popular online sources.
  • πŸ“± More UI Screens
    • Dashboard: Live device status, quick controls (planned)
    • Scanner: Channel scan, activity log (planned)
    • Programmer: (currently CSV export only; write and edit support coming)
  • 🦺 Safer Write/Verify Procedures
    To minimize risk of bricking, with lots of warnings.

πŸ—‚οΈ Project Structure

β”œβ”€β”€ benshi/
β”‚   β”œβ”€β”€ protocol.dart          # Protocol, serialization, parsing, and radio commands
β”‚   └── radio_controller.dart  # Orchestrates Bluetooth and protocol communication
β”œβ”€β”€ main.dart                  # App entrypoint
β”œβ”€β”€ screens/
β”‚   β”œβ”€β”€ connection_screen.dart # Bluetooth pairing and connect
β”‚   β”œβ”€β”€ dashboard_view.dart    # (Planned) Live status/controls
β”‚   β”œβ”€β”€ main_screen.dart       # Navigation and main page
β”‚   β”œβ”€β”€ programmer_view.dart   # Chirp export (write/edit planned)
β”‚   └── scanner_view.dart      # (Planned) Channel scan/log
└── services/
    └── web_programmer.dart    # Chirp CSV export via web server

🎨 Screenshots

Add your screenshots here!
(Not included yet. Pull requests welcome!)


πŸ€– How It Works

  • Bluetooth Serial: Uses flutter_bluetooth_serial to connect to your radio.
  • Benlink Protocol: Implements the full frame/command structure, but currently only reads memory.
  • Web Export: Spins up a local server using shelf so you can download your memory dump as a CHIRP-compatible CSV.
  • Safe By Default: No writing to the radio yet, so it's (relatively) safe!

πŸ“ Usage

  • No install guide yet!
    This project is for advanced users and developers.
    If you have to ask how to run it, you probably shouldn't (yet)! πŸ˜‰

πŸ’‘ Roadmap

  • Full write-back support with in-app editing
  • Online import (RadioReference, RepeaterBook)
  • UI polish and full-featured screens
  • Multi-radio support
  • More safety checks

πŸ™ Credits


🦺 License & Disclaimer

  • This is NOT an official tool for any radio brand.
  • Use at your own risk. You are responsible for your hardware and data.
  • See LICENSE for details.

Have fun, experiment, and help improve open radio!
PRs/issues welcome. Stay tuned for more!

Developer Updates

Loading updates...