- Deadmesh là cây cầu open-source biến mạng Meshtastic LoRa thành Internet gateway dùng được: chỉ một node có uplink (fiber, 4G, Starlink), cả mesh dùng HTTP/HTTPS/email/SOCKS qua LoRa mà không cần sửa app.
- $30 phần cứng, không phí hàng tháng.
TL;DR
Deadmesh (repo gnarzilla/deadmesh) là một resilient text-first Internet bridge cho mesh radio Meshtastic. Một node duy nhất có uplink (fiber, 4G/5G, Starlink, Iridium...) đóng vai trò gateway; toàn bộ node còn lại trên mesh truy cập HTTP/HTTPS, SMTP/IMAP, SOCKS4/5, WebSocket, FTP qua LoRa — không cần sửa một dòng code nào trong các app hiện có. Phần cứng từ ~$30, license MIT, status v1.1: gateway pipeline đã verified end-to-end, client-side reassembly đang final testing. Một gateway đặt tốt có thể phục vụ cả một làng hoặc vùng nhiều km.
What's new
Mạng Meshtastic vốn rất giỏi nhắn tin và telemetry off-grid, nhưng không được thiết kế cho truy cập Internet phổ thông. Mỗi protocol kiểu mới sẽ phải có implementation mesh-aware riêng — chicken-and-egg: app không thêm mesh support khi chưa có user, user không adopt mesh khi chưa có app.
Deadmesh xử lý bằng cách đứng giữa: phía mesh nói thuần Meshtastic (protobuf qua LoRa serial với API handshake chuẩn), phía Internet nói mọi protocol app của bạn vốn đã dùng. Insight kiến trúc: coi LoRa như một dumb byte pipe và đẩy hết intelligence lên proxy layer — đúng cách TCP/IP đã thắng mọi network protocol chuyên dụng những năm 1980.
Why it matters
Đây không chỉ là tool resilience. Đây là một exit ramp khỏi mô hình carrier. Voice và video thực sự bất khả thi trên LoRa (audio nén nặng cần ~700 bps tối thiểu, LONG_FAST chỉ cho ~3 kbps usable). Nhưng text, email, weather, maps, và cached web — đó là phần lớn việc một chiếc điện thoại làm hằng ngày. Với ~$50 phần cứng một lần, bạn có Internet text-first không cần data plan.
Tầm nhìn lớn hơn: một content-addressed network tình cờ nói HTTP. Khi gateway đã từng tải một trang, phục vụ lại trang đó cho bất kỳ ai trên mesh sẽ tốn zero airtime, mãi mãi. Toàn bộ Wikipedia tiếng Anh chỉ 4 GB plain text — vừa thẻ SD của Raspberry Pi. Một gateway được seed đầy đủ KHÔNG phải proxy tới Wikipedia, nó LÀ Wikipedia, ngay tại chỗ, không cần uplink.
Technical facts
Protocol auto-detection bằng cách inspect bytes đầu tiên — không cần config:
| Initial bytes | Protocol | Handler |
|---|---|---|
GET / HTTP/1.1 | HTTP | Forward upstream |
CONNECT host:443 | HTTPS tunnel | TLS interception (HTTP/1.1 ALPN) |
EHLO | SMTP | Email relay |
A001 NOOP | IMAP | Mail client support |
\x05 / \x04 | SOCKS5/4 | Tunneling |
Intelligent fragmentation: chunk request/response thành packet ~220 byte, mỗi chunk có unique packet ID để vượt qua dedup (from, id) của firmware Meshtastic vốn sẽ silent-drop tất cả chunk sau cái đầu tiên. Header 12 byte mang logical_session_id + seq + total.
MITM proxy đầy đủ: TLS interception với upstream certificate mimicry, plugin.cache (zero airtime cho repeat requests), plugin.compressor (3-10× hiệu quả với text), ad blocker, rate limiter. Connection pooling + TLS session reuse cắt giảm airtime LoRa quyết liệt.
Embedded dashboard tại localhost:8081, self-contained trong binary, SSE streaming — bảng node sống (tên, hops, SNR, battery, GPS, last-heard), proxy links, chat mesh. Robust serial framing 0x94/0xC3 length-prefix state machine với sync recovery — chính cái này giúp uptime 100+ giờ liên tục.
Performance
Dựa trên LoRa LONG_FAST preset:
| Metric | Value |
|---|---|
| Raw bitrate | ~5.5 kbps |
| Effective throughput | ~3-4 kbps (sau overhead) |
| Latency / hop | 500 ms – 5 s |
| Email (text) | 10-20 messages/phút |
| Web browsing | 30-60 s/page (có cache) |
| DNS lookup | ~2 s (cache aggressively) |
| API call | 5-10 s/request |
| File transfer | ~400 B/s (~1.4 MB/h) |
| Cached content | instant — zero airtime |
| Concurrent clients/gateway | 10-20 thoải mái |
Bottleneck theo thứ tự: LoRa duty cycle → mesh hop count (>4 hops diminishing returns) → gateway uplink. EU duty-cycle 1% airtime thường là ràng buộc thật, không phải hardware.
Comparison
So với hệ sinh thái mesh khác:
- Meshtastic chuẩn: chỉ text-only, muốn Internet phải bridge MQTT (mất tính off-grid). Deadmesh cho HTTP/SMTP/SOCKS native, app không cần sửa.
- goTenna: hệ sinh thái đóng, hardware đắt, app proprietary. Deadmesh chạy trên Meshtastic $30 và open-source MIT.
- Reticulum: network stack crypto-first cực kỳ resilient, nhưng app phải rewrite theo Reticulum API. Deadmesh dùng được luôn browser/email client hiện có.
- HamNet (AMPRNet): microwave bandwidth cao, nhưng cần giấy phép amateur radio. Deadmesh chạy trên ISM band không cần license.
Use cases
- Disaster response: cell tower sập, mesh sống tiếp, cứu hộ phối hợp qua km bằng solar.
- Rural connectivity: share một uplink Starlink cho cả một làng nhiều km.
- Festival / protest / camp tạm: dựng nhanh, tháo gọn, network biến mất khi pack up.
- Off-grid permanent: $50 gear + solar = Internet text bền vững, không subscription.
- Censorship resistance: giữ liên lạc khi blackout; không tracker bên thứ ba.
- Mesh librarians: tình nguyện viên cầm USB chứa Wikipedia, bản đồ, sách sửa chữa, sách y tế đi khắp nơi seed gateway. Mỗi lần seed xong, cả mesh tốn zero airtime tra cứu trang đó mãi mãi. Network thông minh hơn mỗi ngày.
Hardware
Radio đã verified: Seeed Wio Tracker L1 (nRF52840 + SX1262, gateway), Heltec LoRa 32 V3 (ESP32-S3 + SX1262, client). Expected to work: RAK WisBlock RAK4631, Heltec V4, Lilygo T-Beam & T-Echo, Station G2.
Gateway host: Raspberry Pi 4/5 (2 GB+ RAM) cho deployment 24/7 solar; Pi Zero 2W cho traffic nhẹ; x86 Linux; hoặc Windows qua WSL2 + USB/IP passthrough. Binary nhẹ, Pi 4 dùng 8 worker threads xử lý concurrent proxy thoải mái. Power: 5V/3A hoặc 12V solar + battery.
Limitations & pricing
Pricing: $0/tháng. Đầu tư phần cứng ~$30-50 một lần (Meshtastic radio + Raspberry Pi nếu muốn gateway riêng). License MIT.
Hard limits: không voice, không video (LoRa quá hẹp). Cần line-of-sight — nhà cao tầng, cây, đồi núi cản tín hiệu. >4 hops giảm hiệu quả nhanh. Deadmesh độc chiếm serial port của radio (không chạy song song với Meshtastic CLI). Mesh là pseudonymous, không anonymous — môi trường nhạy cảm cần rotate node ID + channel key, tránh PII trong metadata. Client-side reassembly vẫn đang final testing trong v1.1; Android client app rơi vào v1.2.
What's next
v1.2 (sắp tới): end-to-end LoRa session test, Android client app, mesh:// scheme handler (gõ mesh://en.wikipedia.org nhận lại bản text-only nén ~98% nhỏ hơn), smart mesh router với whitelist/blacklist/API substitution, content transformation pipeline (readability strip, image drop, size cap), Wikipedia plaintext fast-path via MediaWiki API, USB cache warming, node topology map.
v1.3: multi-gateway coordination, full DTN store-and-forward queue, per-client bandwidth shaping, WebRTC signaling cho voice/video peer-to-peer, mesh librarian tooling (USB cache export/import + curated content packs).
v2.0: full IPv6, chạy Deadmesh thẳng trên firmware ESP32 (không cần host), Starlink/Iridium backhaul optimization, content-addressed cache federation giữa nhiều gateway.
Nguồn: gnarzilla/deadmesh, meshtastic.deadlight.boo, meshtastic.org, Wikipedia: Meshtastic.


