Meshtastic: mạng mesh phân tán off-grid mã nguồn mở
(meshtastic.org)- Meshtastic là một mạng mesh mã nguồn mở kết nối các thiết bị công suất thấp, chi phí thấp mà không cần trạm phát sóng hay Internet, hữu ích trong những tình huống không có hạ tầng liên lạc
- Sử dụng liên lạc tầm xa dựa trên LoRa và mã hóa AES-256, cho phép gửi nhận mesh peer-to-peer riêng tư ngay cả trong môi trường off-grid
- Hệ sinh thái đang mở rộng với hơn 8 thiết bị được cộng đồng hỗ trợ, hơn 149 người đóng góp mã nguồn trên toàn thế giới, 26 khu vực LoRa và 39 ngôn ngữ được hỗ trợ
- Thông qua ứng dụng iOS·iPad·Mac OS, ứng dụng Android, Web Client và Python CLI/SDK, người dùng di động và nhà phát triển đều có thể truy cập cùng một mạng
- Cung cấp nhiều client cùng tài liệu và công cụ flasher, giúp lộ trình bắt đầu từ chuẩn bị phần cứng đến cấu hình và điều khiển thiết bị trở nên tương đối rõ ràng
Mạng mesh hoạt động không cần hạ tầng
- Meshtastic là một mạng mesh phân tán off-grid dựa trên mã nguồn mở
- Được tạo ra để chạy trên các thiết bị giá rẻ, tiêu thụ điện thấp, đồng thời cung cấp kết nối peer-to-peer mà không cần trạm phát sóng hay Internet
- Tiền đề cốt lõi là “No cell towers. No internet. Just pure peer-to-peer connectivity.”
Tính năng liên lạc
- Long Range: Công nghệ LoRa cho phép liên lạc trong phạm vi vài kilômét
- Encrypted: Mã hóa AES-256 giúp giữ tin nhắn ở trạng thái riêng tư và an toàn
- No Infrastructure: Hoạt động mà không cần trạm phát sóng, WiFi hay kết nối Internet
Cộng đồng và phạm vi hỗ trợ
- Quy mô hệ sinh thái mà Meshtastic đưa ra như sau
- Thiết bị được cộng đồng hỗ trợ: hơn 8
- Người đóng góp mã nguồn trên toàn thế giới: hơn 149
- Khu vực LoRa: 26
- Ngôn ngữ được hỗ trợ: 39
Client truy cập và điều khiển
- Apple Apps: Ứng dụng tương thích iOS, iPad, Mac OS để quản lý mạng Meshtastic khi đang di chuyển
- Android App: Có thể kết nối và điều khiển thiết bị Meshtastic từ ứng dụng Android
- Web Client: Client nền web cho phép truy cập mạng Meshtastic từ nhiều thiết bị
- Python CLI/SDK: Cung cấp giao diện dòng lệnh và SDK dành cho nhà phát triển Python
Công cụ bắt đầu và cấu hình
- Get Started: Liên kết đến tài liệu bắt đầu với Meshtastic
- Read the Docs: Điểm vào tài liệu dành cho người dùng cần chuẩn bị phần cứng
- Flasher: Liên kết đến công cụ flasher trên trang Meshtastic
1 bình luận
Ý kiến trên Hacker News
Có một dự án liên quan là https://github.com/antirez/freakwan/
Nhân tiện thì đó là thứ tôi làm ra. Ý tưởng khá giống Meshtastic, nhưng mục tiêu là làm cho các lựa chọn ở cấp độ giao thức được tài liệu hóa và thể hiện rõ ràng hơn, đồng thời có một triển khai dễ hack và sửa đổi hơn nhiều
Nếu bạn hiểu tiếng Ý thì cũng có một bài nói chuyện ở đây: https://talks.codemotion.com/introduzione-alla-tecnologia-rf...
Tôi đã dùng nó ở Burning Man năm 2023, mà Burning Man thì rất khắc nghiệt với thiết bị, còn môi trường tần số vô tuyến thì phức tạp đến ngạc nhiên
Dù vậy nó vẫn ổn định và trải nghiệm người dùng cũng tốt, nên tôi khá thích
Tôi cũng đã tạo một bản fork firmware đã chỉnh sửa để hiển thị vị trí trên playa
https://github.com/exadeci/Meshtastic-device-bm
Tôi đã tìm hiểu xem liệu có thể mua một đống thiết bị LoRa/Meshtastic rồi ghi lại vị trí của mình và hiển thị lên bản đồ theo kiểu APRS hay không
Nhưng có vẻ nó khó hơn nhiều so với việc thiết lập APRS iGate và xem vị trí của tôi trên aprs.fi
Tôi muốn thử lại vào lúc nào đó, nhưng cảm thấy cần một hướng dẫn bắt đầu thật tốt để có động lực
Câu nói “đừng hỏi tuổi phụ nữ, lương đàn ông, và bộ thu phát LoRa về thông lượng” chợt hiện ra trong đầu
Ở mức vài chục bit mỗi giây, nếu tính cả header gói và sửa lỗi các thứ, thì cùng lắm cũng chỉ được vài ký tự mỗi giây hoặc còn thấp hơn
Nhưng nếu dùng độ rộng kênh lớn hơn và hệ số trải phổ thấp hơn thì có thể lên tới 62.5kbps. Tôi không rõ chính xác Meshtastic mặc định dùng chế độ nào, nhưng có vẻ có 8 preset
Tôi biết đó là một câu thành ngữ, và không phải đang trách bình luận gốc
Trước khi quá phấn khích vì thứ này, cần nói rõ rằng việc dùng hệ thống radio mesh bán song công/TDD với anten đẳng hướng thuộc nhóm cách làm kém hiệu quả nhất để xây dựng mạng IP không dây ở quy mô làng mạc hoặc thị trấn nhỏ
Khi anten đẳng hướng liên lạc với nhau, anten đẳng hướng cũng đồng thời là bộ thu nhiễu 360 độ, nên nó sẽ nhận cả lưu lượng hoặc tín hiệu chiếm khe thời gian từ các nút mesh xa hơn chứ không chỉ từ đối tác đang truyền nhận trực tiếp
Tương tự, khi gửi gói tin tới một nút cụ thể, 99% tín hiệu RF sẽ phát tán theo các hướng phương vị không mong muốn và không cần thiết, đồng thời làm tăng nền nhiễu cho các nút xung quanh có cấu hình phần cứng tương tự
Nếu ai đó muốn làm kiểu này với ngân sách cực kỳ eo hẹp, tôi khuyên nên xem xét hệ thống không dây 802.11ac/ax point-to-point được thiết kế để tạo cầu nối Ethernet L2 giữa hai điểm. Chủ yếu là dựa trên anten phản xạ parabol, và gần đây cũng có thiết bị bridge point-to-point 24GHz·60GHz giá rẻ, với điều kiện có đường nhìn thẳng và vùng Fresnel thông thoáng
Thiết bị kiểu LoRa cũng hoạt động ở dải giống VHF/UHF, thấp hơn nhiều so với 2.4GHz hay 5GHz, thường dưới 1300MHz; nếu bạn cần liên kết cố định giữa hai điểm và có thể hướng anten Yagi-Uda hoặc anten lưỡng cực vào nhau thay vì để hai anten đẳng hướng đối diện nhau thì sẽ tốt hơn nhiều
Nếu các nút không di chuyển và vị trí tương đối giữa chúng không thay đổi, tôi rất khuyên nên cân nhắc gần như bất kỳ phương án nào không phải anten đẳng hướng cho liên kết mạng giữa các nút để có độ ổn định đường truyền và tốc độ dữ liệu tốt hơn
Đây là một ví dụ ngẫu nhiên tìm thấy sau 5 giây, hãy xem mẫu độ lợi theo hướng cụ thể: https://www.elprocus.com/design-of-yagi-uda-antenna/
Một trong những việc hay ho đang được làm với chipset và mô-đun RF kiểu LoRa hiện nay là ExpressLRS. Nó triển khai cầu nối UART nối tiếp giữa bộ điều khiển từ xa và bộ điều khiển bay gắn trên UAV, thuyền không người lái hoặc xe mặt đất. Đây là phiên bản phát triển hơn của khái niệm chung như TBS Crossfire cho mục đích RC
https://www.google.com/search?client=firefox-b-d&q=expresslr...
Meshtastic là nhắn tin văn bản có kênh, đồng thời cung cấp truyền dữ liệu cảm biến và tính năng dữ liệu vị trí cho một số nút
Nó không nhằm mục đích cung cấp mạng TCP/IP
Việc xây dựng “mạng IP không dây quy mô làng mạc hoặc thị trấn nhỏ” vốn chưa bao giờ là mục tiêu. Nó chỉ có thể tạo ra mạng nhắn tin văn bản đơn giản với tầm phủ khá tốt và băng thông thấp
Có vẻ thật sự có rất nhiều khả năng vượt qua ISP
Nhưng với những hệ thống có thông lượng rất thấp và chậm theo miền thời gian như LoRa, đây không phải là khái niệm dễ áp dụng nếu tính đến yếu tố di động
Có một video trong đó một người Anh cực kỳ nhiệt huyết vừa dùng ứng dụng Android thực tế vừa trình diễn tính năng traceroute v.v.: https://www.youtube.com/watch?v=LmGr1pGJ4sM
Vì được ghi là chỉ mở rộng tới 80 nút, nên có vẻ sẽ khó tìm được một mesh để tham gia trừ khi tự dựng, và có lẽ chỉ khả thi giữa những người quen biết nhau
Tôi muốn một mạng mesh toàn cầu thay thế Internet
Một truy vấn như “Taco Express đã mở cửa chưa?” không nên hoạt động theo cách ánh xạ một cái tên duy nhất toàn cục sang một địa chỉ duy nhất toàn cục, rồi hỏi một máy chủ ở rất xa, để máy chủ đó lại yêu cầu thông tin vị trí nhằm xác định đó là Taco Express nào. Cách đó quá mong manh
Thay vào đó, truy vấn nên lan truyền qua các mesh mà hiện tại có thể chạm tới, rồi gặp được nút có thẩm quyền về giờ mở cửa của Taco Express, có lẽ là một Raspberry Pi đặt tại Taco Express. Vì mục tiêu của truy vấn là thứ mang tính cục bộ, cấu trúc đó sẽ cho ra kết quả cục bộ
Bài toán kết nối các mesh như vậy với nhau cũng thú vị, nhưng sẽ không hữu ích lắm cho đến khi xuất hiện một hệ sinh thái ứng dụng không phụ thuộc vào địa chỉ ổn định của từng nút riêng lẻ
Thứ cần thiết không phải là định địa chỉ máy chủ và request/response, mà là định địa chỉ dựa trên ngữ cảnh và publish/subscribe. Cần một sự chuyển đổi khái niệm khá lớn, và đáng tiếc là có lẽ điều đó sẽ không xảy ra cho đến khi một thảm họa nào đó khiến mọi người bị thuyết phục về sự cần thiết của nó
So với các tuyến cáp quang dài 1000km, 10000Gbps cần hàng triệu đô để triển khai, đóng góp của một cá nhân gần như bằng không. Dù vậy, cũng không ai ngăn bạn lấy cổng ở hai trung tâm dữ liệu hoặc điểm trao đổi Internet, tìm cách nối chúng lại với nhau, rồi thu phí vận chuyển lưu lượng giữa hai đầu
Ở châu Âu, báo giá vận chuyển 10Gbps trên quãng 650km vào khoảng 800 đô mỗi tháng, nên về mặt tiềm năng bạn có thể kiếm được chừng đó
Tôi từng là quản lý sản phẩm cho một hệ thống theo dõi nhân sự dựa trên mesh ở công trường xây dựng, và đã cấp phép công nghệ Wirepas để dùng trong giải pháp đó. Trong quá trình ấy tôi học được rất nhiều về những điểm tinh tế của mesh
Có những đánh đổi khó khăn giữa khả năng được phát hiện, độ trễ, tính sẵn sàng và bảo mật
Chẳng phải đã có mạng mesh Android mã nguồn mở rồi sao? Dựa trên Wi‑Fi hoặc Bluetooth ấy.
Hình như tôi từng nghe nói mạng mesh đã được dùng trong các cuộc biểu tình vài năm trước, vậy giờ vẫn chưa có gì thực sự dùng được sao?
Yggdrasil cho phép dùng các ứng dụng TCP/IP trên chính mạng mesh của nó, nhưng bản thân nó không cung cấp chức năng dành cho người dùng cuối
Manyverse có thể dùng Wi‑Fi cho mạng xã hội phi tập trung: https://www.manyver.se/
Hiện họ đang viết lại backend và rời khỏi Secure Scuttlebutt để chuyển sang giao thức riêng hiện có tên là PPPPP
Reticulum/Sideband cung cấp hệ thống nhắn tin P2P qua Wi‑Fi hoặc các phương tiện khác: https://github.com/markqvist/sideband
Nó đã ngừng hoạt động vào năm 2018 và cũng không phải mã nguồn mở
Tôi từng muốn tham gia phong trào Decentralized Web mà TimBL đã công bố, nhưng rồi nó dần lắng xuống.
Tôi đã đăng ký để đến “offline camp” ở Oregon, nhưng bị hủy vì cháy rừng lớn, và có lẽ có liên quan đến Camp Fire. Cuối cùng tôi lại đi cắm trại bên sông
Tôi đã tiêu hơn 1 triệu USD trong hơn 10 năm để cố tạo ra phần mềm cộng đồng mã nguồn mở có thể chạy trên bất kỳ máy chủ phổ dụng nào, như máy bay, tàu du lịch kiểu Norwegian Cruise Lines, hay các ngôi làng nông thôn
Tôi muốn hỗ trợ giáo dục địa phương, bao gồm cả các bé gái Afghanistan. Tôi cũng đang liên hệ với RohingyaProject.com và những bên khác để hỗ trợ người tị nạn không quốc tịch
Những mạng mesh như vậy đã tồn tại rồi và phần cứng điện thoại cũng rất tốt. Điều còn thiếu là phần mềm backend đủ tốt để giúp mọi người rời khỏi Big Tech, tức Twitter hay Facebook. Tương tự như cách Web đã đưa mọi người rời khỏi AOL và MSN, hay Wordpress đã giúp họ rời khỏi Web 1.0
Nếu bạn muốn tham gia, hoặc biết một phong trào “decentralized web” hay “indieweb” thực sự đang hoạt động, hãy cho tôi biết ở dưới nhé
https://qbix.com/blog/2021/01/15/open-source-communities/
Bài viết gần đây về nền tảng:
https://www.laweekly.com/restoring-healthy-communities/
https://www.robots-everywhere.com/cellsol/ Chúng tôi đã làm ra thứ này vào khoảng năm 2020, và nó hỗ trợ cả các gói tin Meshtastic lẫn disasterradio