majal-edge
Connects a PX4 or ArduPilot drone to Majal, the UAS traffic management (UTM) platform by ScaleX Innovation. It runs on the drone's companion computer (Raspberry Pi, Jetson, …) or on a ground laptop with a telemetry radio, and sends the vehicle's live MAVLink 2 telemetry to Majal over MQTT with TLS.
Connect a drone
- In Majal, open Fleet, choose the aircraft and click Connect. You get a one-time code, valid for 15 minutes.
- On the companion computer, wired to the flight controller (TELEM2 or USB):
pip install majal-edge
sudo majal-edge enroll https://<your-majal-address> ABCD-2345
sudo majal-edge install-service # start now and on every boot (Linux / systemd)
The aircraft appears on the live map once the autopilot has a position fix.
What it does
- Finds the flight controller: USB flight controllers (Pixhawk, Cube, Holybro, CUAV, …), the
companion computer's UART (
/dev/serial0,/dev/ttyAMA0,/dev/ttyTHS1) at 921600 / 57600 / 115200 baud, then MAVLink UDP 14540 / 14550. It only listens while probing.majal-edge detectshows what it finds;enroll --autopilot /dev/ttyACM0skips detection. - Gets its identity from the server: the code is exchanged over HTTPS for a device id and a broker login that belong to this device only. The device id, not the MAVLink system id, identifies the aircraft, so drones left on system id 1 never collide.
- Sends telemetry only: position, altitude, speed, heading, battery, mode and armed state (requested at 4 Hz / 1 Hz to save mobile data). Nothing from the platform is forwarded to the autopilot.
- Handles weak links: reconnects by itself; while offline, telemetry is dropped rather than queued, because a stale position is worse than a gap.
Security
- Enrollment needs
https://(plainhttp://only for local / private test addresses or with--allow-http). Codes are single-use and expire after 15 minutes. - The broker login can only publish this device's own telemetry topic. It can be revoked from the Fleet page at any time, which disconnects the device immediately.
- The configuration file holding the login is readable by its owner only
(
/etc/majal-edge/config.jsonas root, otherwise~/.config/majal-edge/config.json). The systemd service runs as an unprivilegedmajal-edgeuser with thedialoutgroup.
Commands
| Command | |
|---|---|
majal-edge enroll <server> <code> |
redeem the code from Fleet → Connect |
majal-edge run |
forward telemetry (what the service runs) |
sudo majal-edge install-service |
install and start the systemd service |
majal-edge detect |
find the flight controller |
majal-edge status |
show the configuration and test the broker login |
Requires Python 3.9+. Licensed under Apache 2.0. © ScaleX Innovation. Support: support@scalexi.ai
Metadata
Release files for majal-edge 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| majal_edge-0.1.0.tar.gz | 21.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| majal_edge-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.0 kB
Release files / majal_edge-0.1.0.tar.gz
| Download URL | majal_edge-0.1.0.tar.gz |
|---|---|
| Size | 21.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99947b87e56f615b75a01c081e918d29e5b6faf902e695680bf5ef35bf571ca9
|
|
BLAKE2b-256 checksum How to use checksums |
e064a703bfbed9242beb8adfabc0bf11e2372958c700053fee570c931fa578fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.2
|
Release files / majal_edge-0.1.0-py3-none-any.whl
| Download URL | majal_edge-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3dc3804a519923dc82ada43e56cf2892466653d19944604efeb2c8e6721fc419
|
|
BLAKE2b-256 checksum How to use checksums |
ace87ba77ebf3cd67bb2f5958d8fe65af1256f75e069e038e0043149830e05f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.2
|