cort c7ee7f3c8f Fix startup errors: complete method renaming and restore corrupted file
- Fixed _send_forwarding_stats() method (was still named _broadcast_forwarding_stats)
- Updated stats emission to use active_calls/total_calls_today
- Restored dashboard/server.py from corruption (bad replacement)
- Properly implemented all send_to_clients renamings
- Added forwarding_stats event handler to dashboard
- Both services now start successfully

Services tested and working:
✅ run.py starts without errors
✅ run_dashboard.py starts without errors
2025-10-03 08:01:42 -05:00
2025-10-03 07:08:11 -05:00

HBlink4

HBlink4 is the next evolution of the HBlink DMR Server implementation using the HomeBrew protocol, developed by Cort Buffington, N0MJS. This version represents a complete architectural redesign, moving from a server-centric to a repeater-centric model for more granular control and management of connected systems.

Key Architectural Changes

  • Elimination of peer mode - HBlink4 operates purely as a server
  • Individual repeater management rather than server-level system management
  • Direct repeater registration without binding to specific server instances
  • Granular per-repeater control and monitoring
  • Tightly integrated web dashboard with modern look and feel - Real-time monitoring with WebSocket updates, no page refreshes required

Features

  • Modern Python implementation with type hints
  • Improved error handling and logging
  • JSON-based configuration
  • Enhanced repeater management
  • Built on Twisted framework for reliable async operation
  • Tightly integrated web dashboard - Real-time monitoring with modern look and feel (see Dashboard Documentation)
  • Stream tracking with immediate DMR terminator detection (~60ms)
  • Real-time duration counter with 1-second updates
  • Two-tier stream end detection (immediate terminator + timeout fallback)
  • User routing cache for efficient private call routing
  • DMR Link Control (LC) metadata extraction from packet headers and voice frames
  • Embedded LC reassembly with 4-frame accumulation
  • Talker alias extraction with multi-format support (7-bit, ISO-8859-1, UTF-8, UTF-16)
  • Pattern-based repeater configuration and blacklisting
  • Per-slot transmission management

Installation

  1. Clone this repository:
git clone https://github.com/yourusername/HBlink4.git
cd HBlink4
  1. Create a virtual environment and activate it:
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install requirements:
pip install -r requirements.txt

Configuration

Copy the example configuration file and modify it for your needs:

cp config/hblink.json config/my_hblink.json

Edit the configuration file to set up your access control, repeater options, and routing rules. For detailed configuration instructions, see the Configuration Guide.

Running

./run_all.sh

This starts both HBlink4 and the web dashboard. Access the dashboard at http://localhost:8080

Start services separately

# Start HBlink4 server
python3 run.py

# In another terminal, start the dashboard
python3 run_dashboard.py

The server will listen for repeater registrations on the configured bind_ip and bind_port.

For detailed dashboard features and configuration, see the Dashboard Documentation.

Documentation

Comprehensive documentation is available in the docs/ directory:

Configuration

The configuration file uses JSON format and supports extensive customization of server behavior, access control, and routing rules. For detailed configuration instructions and examples, see the Configuration Guide.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. Do not submit a Pull Request to the main branch for added features without consultation first. Added features may collide with other mainline features under development. Use alternative branches named for the feature being added.

License

This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.

Acknowledgments

  • Original HBlink3 by Cort Buffington, N0MJS
  • The MMDVM and DMR community
S
Description
No description provided
Readme
3.8 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 77.9%
HTML 20%
Shell 2.1%