Compare commits

..

9 Commits

Author SHA1 Message Date
Mark Qvist
5b6d0ec337 Updated manual 2023-02-04 16:00:07 +01:00
Mark Qvist
2bbb0f5ec2 Fixed missing entrypoint 2023-02-04 15:59:58 +01:00
Mark Qvist
e385c79abd Updated manual 2023-02-04 15:38:44 +01:00
Mark Qvist
86faf6c28d Updated roadmap 2023-02-04 15:36:11 +01:00
Mark Qvist
6d8a3f09e5 Updated readme 2023-02-04 15:35:55 +01:00
Mark Qvist
1e88a390f4 Updated manual 2023-02-04 14:28:28 +01:00
Mark Qvist
e9ae255f84 Added fallback version URL to rnodeconf updater 2023-02-04 14:18:11 +01:00
Mark Qvist
42dfee8557 Added Bluetooth pairing PIN output 2023-02-04 13:45:12 +01:00
Mark Qvist
177e724457 Updated roadmap 2023-02-04 12:17:05 +01:00
6 changed files with 49 additions and 9 deletions

View File

@ -62,7 +62,7 @@ For more info, see [reticulum.network](https://reticulum.network/)
- Total bandwidth cost of setting up an encrypted link is 3 packets totaling 297 bytes - Total bandwidth cost of setting up an encrypted link is 3 packets totaling 297 bytes
- Low cost of keeping links open at only 0.44 bits per second - Low cost of keeping links open at only 0.44 bits per second
## Development Roadmap ## Roadmap
While Reticulum is already a fully featured and functional networking stack, many improvements and additions are actively being worked on, and planned for the future. While Reticulum is already a fully featured and functional networking stack, many improvements and additions are actively being worked on, and planned for the future.
To learn more about the direction and future of Reticulum, please see the [Development Roadmap](./Roadmap.md). To learn more about the direction and future of Reticulum, please see the [Development Roadmap](./Roadmap.md).

View File

@ -78,6 +78,7 @@ class KISS():
CMD_BLINK = 0x30 CMD_BLINK = 0x30
CMD_RANDOM = 0x40 CMD_RANDOM = 0x40
CMD_BT_CTRL = 0x46 CMD_BT_CTRL = 0x46
CMD_BT_PIN = 0x62
CMD_BOARD = 0x47 CMD_BOARD = 0x47
CMD_PLATFORM = 0x48 CMD_PLATFORM = 0x48
CMD_MCU = 0x49 CMD_MCU = 0x49
@ -386,6 +387,21 @@ class RNode():
RNS.log("Radio reporting bandwidth is "+str(self.r_bandwidth/1000.0)+" KHz") RNS.log("Radio reporting bandwidth is "+str(self.r_bandwidth/1000.0)+" KHz")
self.updateBitrate() self.updateBitrate()
elif (command == KISS.CMD_BT_PIN):
if (byte == KISS.FESC):
escape = True
else:
if (escape):
if (byte == KISS.TFEND):
byte = KISS.FEND
if (byte == KISS.TFESC):
byte = KISS.FESC
escape = False
command_buffer = command_buffer+bytes([byte])
if (len(command_buffer) == 4):
self.r_bt_pin = command_buffer[0] << 24 | command_buffer[1] << 16 | command_buffer[2] << 8 | command_buffer[3]
RNS.log("Bluetooth pairing PIN is: {:06d}".format(self.r_bt_pin))
elif (command == KISS.CMD_DEV_HASH): elif (command == KISS.CMD_DEV_HASH):
if (byte == KISS.FESC): if (byte == KISS.FESC):
escape = True escape = True
@ -865,6 +881,7 @@ class RNode():
selected_version = None selected_version = None
selected_hash = None selected_hash = None
firmware_version_url = "https://unsigned.io/firmware/latest/?v="+program_version+"&variant=" firmware_version_url = "https://unsigned.io/firmware/latest/?v="+program_version+"&variant="
fallback_firmware_version_url = "https://github.com/markqvist/rnode_firmware/releases/latest/download/release.json"
def ensure_firmware_file(fw_filename): def ensure_firmware_file(fw_filename):
global selected_version, selected_hash, upd_nocheck global selected_version, selected_hash, upd_nocheck
if fw_filename == "extracted_rnode_firmware.zip": if fw_filename == "extracted_rnode_firmware.zip":
@ -902,8 +919,31 @@ def ensure_firmware_file(fw_filename):
try: try:
if selected_version == None: if selected_version == None:
if not upd_nocheck: if not upd_nocheck:
try:
try: try:
urlretrieve(firmware_version_url+fw_filename, UPD_DIR+"/"+fw_filename+".version.latest") urlretrieve(firmware_version_url+fw_filename, UPD_DIR+"/"+fw_filename+".version.latest")
except Exception as e:
RNS.log("")
RNS.log("WARNING!")
RNS.log("Failed to retrieve latest version information for your board from the default server")
RNS.log("Will retry using the following fallback URL: "+fallback_firmware_version_url)
RNS.log("")
RNS.log("Hit enter if you want to proceed")
input()
try:
urlretrieve(fallback_firmware_version_url, UPD_DIR+"/fallback_release_info.json")
import json
with open(UPD_DIR+"/fallback_release_info.json", "rb") as rif:
rdat = json.loads(rif.read())
variant = rdat[fw_filename]
with open(UPD_DIR+"/"+fw_filename+".version.latest", "wb") as verf:
inf_str = str(variant["version"])+" "+str(variant["hash"])
verf.write(inf_str.encode("utf-8"))
except Exception as e:
RNS.log("Error while trying fallback URL: "+str(e))
raise e
except Exception as e: except Exception as e:
RNS.log("Failed to retrive latest version information for your board.") RNS.log("Failed to retrive latest version information for your board.")
RNS.log("Check your internet connection and try again.") RNS.log("Check your internet connection and try again.")
@ -2481,8 +2521,9 @@ def main():
rnode.leave() rnode.leave()
if args.bluetooth_pair: if args.bluetooth_pair:
RNS.log("Putting device into Bluetooth pairing mode...") RNS.log("Putting device into Bluetooth pairing mode. Press enter to exit when done.")
rnode.bluetooth_pair() rnode.bluetooth_pair()
input()
rnode.leave() rnode.leave()
if args.info: if args.info:

View File

@ -18,13 +18,11 @@ For each release cycle of Reticulum, improvements and additions from the five [P
- [x] Improve storage persist call on local client connect/disconnect - [x] Improve storage persist call on local client connect/disconnect
- [x] Better path invalidation on roaming interfaces - [x] Better path invalidation on roaming interfaces
- [x] Improved roaming support on Android - [x] Improved roaming support on Android
- [x] Add bluetooth pairing code output to rnodeconf
- [x] Add `rnid` utility with encryption, signing and Identity funcionality
- [ ] Updating the documentation to reflect recent changes and improvements - [ ] Updating the documentation to reflect recent changes and improvements
- [ ] Add bluetooth pairing code output to rnodeconf
- [ ] Transit traffic display in rnstatus - [ ] Transit traffic display in rnstatus
- [ ] JSON output mode for rnstatus - [ ] JSON output mode for rnstatus
- [x] Add `rnid` utility
- [x] Add `rnsign` utility
- [x] Add `rncrypt` utility
- [ ] Create a standalone RNS Daemon app for Android - [ ] Create a standalone RNS Daemon app for Android
- Targets for related applications - Targets for related applications
- [x] Add offline & paper message transport to LXMF - [x] Add offline & paper message transport to LXMF
@ -127,7 +125,7 @@ The Reticulum ecosystem is enriched by several other software and hardware proje
This section lists, in no particular order, various important efforts that would be beneficial to the goals of Reticulum. This section lists, in no particular order, various important efforts that would be beneficial to the goals of Reticulum.
- The [RNode](https://unsigned.io/rnode/) project - The [RNode](https://unsigned.io/rnode/) project
- [ ] Evolve RNode into a self-replicating system, so that anyone can use an existing RNode to create more RNodes, and bootstrap functional networks based on Reticulum, even in absence of the Internet. - [x] Evolve RNode into a self-replicating system, so that anyone can use an existing RNode to create more RNodes, and bootstrap functional networks based on Reticulum, even in absence of the Internet.
- [ ] Create a WebUSB-based bootstrapping utility, and integrate this directly into the [RNode Bootstrap Console](#), both on-device, and on an Internet-reachable copy. This will make it much easier to create new RNodes for average users. - [ ] Create a WebUSB-based bootstrapping utility, and integrate this directly into the [RNode Bootstrap Console](#), both on-device, and on an Internet-reachable copy. This will make it much easier to create new RNodes for average users.
## Release History ## Release History

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -43,6 +43,7 @@ setuptools.setup(
'rnstatus=RNS.Utilities.rnstatus:main', 'rnstatus=RNS.Utilities.rnstatus:main',
'rnprobe=RNS.Utilities.rnprobe:main', 'rnprobe=RNS.Utilities.rnprobe:main',
'rnpath=RNS.Utilities.rnpath:main', 'rnpath=RNS.Utilities.rnpath:main',
'rnid=RNS.Utilities.rnid:main',
'rncp=RNS.Utilities.rncp:main', 'rncp=RNS.Utilities.rncp:main',
'rnx=RNS.Utilities.rnx:main', 'rnx=RNS.Utilities.rnx:main',
'rnodeconf=RNS.Utilities.rnodeconf:main', 'rnodeconf=RNS.Utilities.rnodeconf:main',