Vì sao Nelos tách người dùng khỏi chiếc radio
Nhìn kỹ hơn vào việc "bạn là ai trong team" thực sự nằm ở đâu - trong ứng dụng trên điện thoại, hay trên chiếc radio vật lý - và vì sao lựa chọn đó quan trọng vào ngày radio hết pin, hỏng, hoặc bị bỏ quên ở nhà.
Đó là buổi sáng thứ hai của chuyến đi và đầu nối pin của radio bị lỏng - hoặc thiết bị rơi khỏi balo và nứt vỏ, hoặc đơn giản là bạn quên nó ở điểm xuất phát. Ai đó đưa bạn một máy dự phòng, hoặc bạn lấy ra chiếc máy backup đã mang theo phòng hờ. Câu hỏi quan trọng không phải là "chiếc radio này có bật được không" - mà là liệu team của bạn có còn nhận ra bạn khi nó bật lên hay không.
Câu trả lời cho câu hỏi đó phụ thuộc vào việc ứng dụng bạn dùng lưu "bạn là ai" ở đâu. Bài viết này xem xét cách Nelos xử lý điều đó, so sánh với hai dự án LoRa mesh nổi tiếng - Meshtastic và ứng dụng chính thức của MeshCore - và những điểm mà cách làm của chính Nelos vẫn còn hạn chế.
Hai nơi một danh tính có thể tồn tại
Một hệ thống LoRa mesh luôn là một cặp: điện thoại chạy ứng dụng, và một radio nhỏ mà điện thoại giao tiếp qua Bluetooth. Đâu đó trong cặp này, phải có thứ gì đó trả lời được câu "ai đã gửi tin nhắn này" và "đây là vị trí của ai" - và thứ đó có thể nằm ở một trong hai nửa.
Nếu nó nằm trên radio, thì chính chiếc radio là danh tính của bạn. Bất kỳ khóa hay số nào radio tạo ra khi khởi động lần đầu chính là thứ team của bạn nhận diện. Đổi radio, và bạn đang mang một danh tính khác - team thấy một người gửi mới, xa lạ cho đến khi mọi người thủ công sắp xếp lại xem ai là ai.
Nếu nó nằm trong ứng dụng, radio chỉ là thứ mang tin nhắn của bạn đi qua sóng. Dù radio nào đang cắm với điện thoại của bạn lúc đó, ứng dụng vẫn biết bạn là ai, và ứng dụng của mọi người khác trong team cũng vậy.
Cách Nelos làm điều này
Nelos chọn cách thứ hai. Lần đầu bạn cài Nelos, ứng dụng tạo một mã định danh riêng cho lượt cài đặt đó và lưu trên điện thoại của bạn. Mã định danh đó - không phải bất cứ thứ gì radio báo cáo - mới là thứ gắn nhãn cho tin nhắn, vị trí, và vị trí của bạn trong danh sách team.
Kết nối một radio tương thích khác qua Bluetooth và Nelos nhận ra đó là một thiết bị vật lý mới, nhưng mã định danh của riêng bạn không đổi, nên cách team nhìn nhận bạn cũng không đổi theo. Nelos tự động thiết lập lại kết nối của team ở chế độ nền. Khoảnh khắc duy nhất ứng dụng hỏi bạn điều gì là khi cài đặt tần số của radio mới chưa khớp với những gì team bạn đang dùng - lúc đó nó hiện một xác nhận ngắn để bạn chọn dùng cài đặt nào, thay vì đoán mò. Việc ghép nối vẫn là một bước thật sự: bạn kết nối radio mới qua Bluetooth như bất kỳ thiết bị nào khác, nó không tự động hay tức thì ngay từ lần đầu.
Tên, các team bạn tham gia, lịch sử trò chuyện - tất cả những điều đó ở lại với lượt cài ứng dụng, hoàn toàn độc lập với việc radio vật lý nào đang được kết nối vào lúc này.
Cách Meshtastic và ứng dụng chính thức của MeshCore làm điều này
Cần chính xác ở phần này, vì "LoRa mesh" bao gồm nhiều dự án khác nhau không phải dự án nào cũng hoạt động giống nhau, và bản thân Nelos được xây trên giao thức MeshCore - nên đây không phải lời chỉ trích công nghệ đó, chỉ là mô tả nơi mỗi phần mềm chọn lưu danh tính.
Meshtastic tạo một cặp khóa công khai/riêng tư ngay trên radio, và tài liệu chính thức của Meshtastic nói rõ rằng danh tính của node trước nay được tạo ra từ địa chỉ MAC phần cứng của thiết bị, một giá trị do nhà sản xuất cố định sẵn[1]. Cặp khóa đó - và danh tính nó đại diện - nằm trên chính thiết bị vật lý ấy. Đội ngũ Meshtastic từng công khai thảo luận về việc thay đổi cách tạo node ID trong một bản firmware tương lai[2], nhưng tính đến hiện tại, việc reset hoặc thay một node Meshtastic được hiểu là sẽ tạo ra một danh tính mới, không có cách nào được ghi nhận chính thức để người dùng mang danh tính cũ sang phần cứng khác.
Ứng dụng companion chính thức của MeshCore (từ chính dự án MeshCore, khác với bất kỳ app client nào xây dựng trên nền đó) cũng tạo danh tính của node - một cặp khóa Ed25519 - ngay trên chiếc radio vật lý, và tài liệu của MeshCore có mô tả các lệnh để đọc hoặc đặt private key của thiết bị, nhưng chỉ qua kết nối serial/USB, và chỉ dành cho repeater và room server - các node hạ tầng, không phải chiếc radio companion một người mang theo[3]. Ứng dụng companion có tính năng Export Settings / Import Settings ngay trong app, nhưng FAQ của MeshCore ghi nhận đây là cách sao lưu và khôi phục cấu hình của chính thiết bị đó quanh việc factory reset - khôi phục lại đúng thiết bị đó[4] - không phải là cách được ghi nhận để chuyển một danh tính đang có sang một radio vật lý khác.
So sánh
| Câu hỏi | Nelos | Meshtastic | App MeshCore chính thức |
|---|---|---|---|
| Danh tính nằm ở đâu | Trong ứng dụng, trên điện thoại của bạn | Trên radio (cặp khóa gắn với thiết bị) | Trên radio (cặp khóa Ed25519 lưu trên thiết bị) |
| Đổi sang radio tương thích khác | Cùng một danh tính - team vẫn nhận ra bạn | Danh tính mới trên node mới/đã reset, không ghi nhận là chuyển được | Danh tính gắn với đúng thiết bị đó; không ghi nhận cách chuyển giữa các radio companion |
| Sao lưu hoặc khôi phục cài đặt của thiết bị | Chưa có - đang dự kiến | Không ghi nhận ở cấp độ danh tính | Có, Export/Import Settings - để khôi phục đúng thiết bị đó |
| Đổi điện thoại mới, hoặc cài lại app | Danh tính mới (chưa có cách khôi phục) | Không áp dụng - điện thoại không giữ danh tính | Không áp dụng - điện thoại không giữ danh tính |
Điều này có ý nghĩa gì trong thực tế
Lợi ích thực tế của việc giữ danh tính trong ứng dụng chủ yếu là bạn không phải suy nghĩ quá nhiều về phần cứng:
- Sở hữu nhiều hơn một radio tương thích - một máy chính và một máy dự phòng - mà không khiến team phải coi bạn là hai người khác nhau.
- Mang một radio khác cho những chuyến đi khác nhau (một máy nhỏ gọn cho chuyến đi trong ngày, một máy tầm xa hơn cho chuyến nhiều ngày) mà không phải giải thích lại bạn là ai với mọi người.
- Mượn hoặc cho mượn radio dự phòng khi thiết bị của ai đó hỏng giữa chuyến đi, và tiếp tục nói chuyện với team ngay qua nó.
- Thay thế một radio bị mất hoặc hỏng và tiếp tục đúng những cuộc trò chuyện, đúng team đó, sau khi đã ghép nối máy thay thế.
Những giới hạn hiện tại của cách làm này
Không có gì ở đây là tuyệt đối, và cũng cần nói rõ những giới hạn không kém:
- Đổi radio vẫn cần ghép nối máy mới qua Bluetooth - việc này không tự động cho đến khi bạn làm vậy, và nếu cài đặt tần số của nó khác với team, Nelos sẽ hỏi bạn xác nhận dùng cài đặt nào.
- Danh tính của bạn nằm trên điện thoại, gắn với đúng lượt cài ứng dụng đó - không phải trong một tài khoản, vì Nelos không có tài khoản. Cài lại ứng dụng, xóa dữ liệu ứng dụng, hoặc chuyển sang điện thoại mới hiện sẽ bắt đầu một danh tính hoàn toàn mới. Chưa có cách sao lưu hay khôi phục cho việc này.
- Một danh tính mới nghĩa là team lại thấy bạn như một thành viên mới, chưa quen - giống hệt cách đổi radio gây ra ở những app được so sánh trong bài này - Nelos chỉ đơn giản là chuyển rủi ro đó từ chiếc radio sang dữ liệu ứng dụng trên điện thoại.
Đổi phần cứng, giữ nguyên con người.
Đó là toàn bộ ý tưởng: radio là một bộ phận có thể thay thế, không phải danh tính của bạn. Dù chiếc máy tương thích nào cuối cùng nằm trong balo của bạn, team vẫn thấy đúng con người đó ở đầu bên kia.
Nelos là ứng dụng độc lập được xây dựng trên giao thức MeshCore, không liên kết, không được tài trợ hay xác nhận bởi dự án Meshtastic hay MeshCore. Nguồn tham khảo, đã đối chiếu trực tiếp với tài liệu chính thức:
- Meshtastic - Tổng quan mã hóa (node ID dựa trên địa chỉ MAC phần cứng)
- Thảo luận firmware Meshtastic - "Tạo node ID từ public key"
- Tài liệu MeshCore - CLI Commands (lệnh private key, chỉ qua serial, cho repeater/room server/sensor)
- Tài liệu MeshCore - FAQ (Export Settings / Import Settings quanh việc factory reset)
Tìm một ứng dụng liên lạc nhóm ngoài vùng phủ sóng hiện đại? Xem Nelos hoạt động ra sao.
Nelos mang nhắn tin nhóm, chia sẻ vị trí và bản đồ nhóm trực tiếp lên LoRa mesh — không cần sóng di động, không máy chủ, không tài khoản.