Skip to main content

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

  1. In Majal, open Fleet, choose the aircraft and click Connect. You get a one-time code, valid for 15 minutes.
  2. 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 detect shows what it finds; enroll --autopilot /dev/ttyACM0 skips 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: position, altitude, speed, heading, battery, mode and armed state (requested at 4 Hz / 1 Hz to save mobile data).
  • Reads the autopilot's parameters on the drone (0.2+): the full list at start and every 10 minutes, and again when one changes, so Majal can show the safety settings (geofence, return-home altitude, battery and link-loss actions), their history, and a pre-flight check.
  • Obeys no command unless you allow it on the drone (0.2+). With majal-edge allow-commands land,return_home, it accepts those commands from Majal only when they are signed by the platform for this drone, less than 30 seconds old and never seen before; it then sends the standard MAVLink command to the autopilot and reports whether the autopilot accepted and executed it. Raw MAVLink from the platform is never forwarded. The workspace and the aircraft must also allow commands in Majal, and the remote pilot keeps priority: a mode change on the handset overrides any command.
  • 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:// (plain http:// only for local / private test addresses or with --allow-http). Codes are single-use and expire after 15 minutes.
  • The broker login can only use this device's own topics (telemetry, parameters, command answers, and the signed commands meant for it). It can be revoked from the Fleet page at any time, which disconnects the device immediately.
  • Commands are verified on the drone with the platform's Ed25519 public key received at enrollment (signature, device, 30-second expiry, single use). When the platform rotates its key (0.2.1+), the agent fetches the new public key from the platform over HTTPS, at most once a minute.
  • The configuration file holding the login is readable by its owner only (/etc/majal-edge/config.json as root, otherwise ~/.config/majal-edge/config.json). The systemd service runs as an unprivileged majal-edge user with the dialout group.

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
majal-edge allow-commands land,return_home commands this drone obeys: land, return_home, hold, takeoff, goto, all or none (default)

Requires Python 3.9+. Licensed under Apache 2.0. © ScaleX Innovation. Support: support@scalexi.ai

Metadata

Release files for majal-edge 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for majal-edge 0.2.1
File Size Uploaded
majal_edge-0.2.1.tar.gz 34.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for majal-edge 0.2.1
File Interpreter ABI Platform
majal_edge-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 64.7 kB

Release files / majal_edge-0.2.1.tar.gz

Download URL majal_edge-0.2.1.tar.gz
Size 34.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d9cf90f01448916104bcd3b043681cbcef548c9ee86dcb2bf74f6e66e75dd6e0
BLAKE2b-256 checksum
How to use checksums
a48042eb04138dfd4bd52f981739fea61f4657c1f087656b2f4c5cf02a0b609e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / majal_edge-0.2.1-py3-none-any.whl

Download URL majal_edge-0.2.1-py3-none-any.whl
Size 30.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
df73426777c876141af26a0bc281158d43685eaa5a022ff0bba4198dee283a8a
BLAKE2b-256 checksum
How to use checksums
3039ecacd890d00abacf701810185f853dcfc4a8a72cfa47fa46d58d962d62a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page