Who made it, and why: author, credits, licence and support

The README says who wrote it and the two projects it was built for, WII6
and OGLAS, with their sites; credits Ground Control for the modem and
the library that does the protocol work; and gives the licence with
contact details, where to report issues and what helps in a report, and
that it is not a Ground Control product. The licence, every source file
and the Python package's metadata carry the copyright and email; the
package lists its homepage, repository, issues and changelog.
This commit is contained in:
scottp committed 2026-10-09 13:16:30 +11:00
1 parent 90d56e4c6d
commit 97affae86c
28 files changed
+76 -3

No files matched your search

+1
View File
@@ -1,4 +1,5 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
# #
# rockblock9704-zephyr: Ground Control's RockBLOCK 9704 library built for # rockblock9704-zephyr: Ground Control's RockBLOCK 9704 library built for
# Zephyr, with the serial port, the timing calls and one worker thread to own # Zephyr, with the serial port, the timing calls and one worker thread to own
+1
View File
@@ -1,4 +1,5 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
menuconfig RB9704 menuconfig RB9704
bool "RockBLOCK 9704 Iridium modem" bool "RockBLOCK 9704 Iridium modem"
+1 -1
View File
@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2026 Scott Penrose Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
+33 -2
View File
@@ -11,6 +11,13 @@ The 9704 sends and receives IMT messages of up to 100 kB through the
Iridium network, and speaks JSPR, JSON lines over a 230400 8N1 UART. There Iridium network, and speaks JSPR, JSON lines over a 230400 8N1 UART. There
is no AT mode; it is not a 9602 or 9603. is no AT mode; it is not a 9602 or 9603.
rockblock9704-zephyr is written and maintained by Scott Penrose
([Digital Dimensions](https://www.dd.com.au/)). It was built for two
projects that send data home by satellite:
[WII6](https://wii6.au/), a wave-measuring buoy, and
[OGLAS](https://oglas.au/), a fleet of LoRa sensors, repeaters and hubs.
Both run it, and neither is needed to use it.
## Ground Control's library ## Ground Control's library
This module does not reimplement or fork the protocol. Ground Control's This module does not reimplement or fork the protocol. Ground Control's
@@ -175,7 +182,31 @@ docs/TESTING.md the tests and how to run them
west.yml the pins west.yml the pins
``` ```
## Credits
- [Ground Control](https://www.groundcontrol.com/), for the RockBLOCK 9704
and its [C library](https://github.com/rock7/RockBLOCK-9704) (MIT),
which does all of the protocol work. This module builds it unchanged.
- The serial port and the worker began in OGLAS's satellite bench and were
carried through WII6 before moving here.
## Licence ## Licence
MIT, as Ground Control's library is. The serial port and worker began in MIT, as Ground Control's library is. See `LICENSE`.
the OGLAS satellite bench and were carried through WII6 before moving here.
Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* https://www.sh3d.com.au/ - Sh3d
* https://www.dd.com.au/ - Digital Dimensions
## Support
Report issues on the [GitHub mirror](https://github.com/SH3D/rockblock9704-zephyr/issues)
(the Gitea instance does not allow public sign-ups). Most helpful in a
report: the output of `rb9704 spy on` around the problem, and the modem's
firmware version from `rb9704 info`.
## Disclaimer
This is not an official Ground Control product. Use at your own risk, and
remember that every `send` costs airtime.
+1
View File
@@ -1,4 +1,5 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
description: | description: |
RockBLOCK 9704, Ground Control's Iridium Certus (IMT) modem board, on a RockBLOCK 9704, Ground Control's Iridium Certus (IMT) modem board, on a
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704.h - the RockBLOCK 9704 Iridium modem on Zephyr. * rb9704.h - the RockBLOCK 9704 Iridium modem on Zephyr.
* *
+2
View File
@@ -1,4 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
# #
# install.sh - set up the RockBLOCK 9704 host tools. # install.sh - set up the RockBLOCK 9704 host tools.
# #
+7
View File
@@ -8,6 +8,7 @@ version = "0.1.0"
description = "Host tools for the RockBLOCK 9704: a command line for the modem and Cloudloop, and a fake modem for testing" description = "Host tools for the RockBLOCK 9704: a command line for the modem and Cloudloop, and a fake modem for testing"
readme = "README.md" readme = "README.md"
license = { text = "MIT" } license = { text = "MIT" }
authors = [{ name = "Scott Penrose", email = "scottp@dd.com.au" }]
requires-python = ">=3.10" requires-python = ">=3.10"
dependencies = ["pyserial>=3.5"] dependencies = ["pyserial>=3.5"]
@@ -18,6 +19,12 @@ dependencies = ["pyserial>=3.5"]
modem = ["rockblock9704==1.0.2"] modem = ["rockblock9704==1.0.2"]
test = ["pytest>=7"] test = ["pytest>=7"]
[project.urls]
Homepage = "https://www.dd.com.au/"
Repository = "https://github.com/SH3D/rockblock9704-zephyr"
Issues = "https://github.com/SH3D/rockblock9704-zephyr/issues"
Changelog = "https://github.com/SH3D/rockblock9704-zephyr/blob/main/CHANGELOG.md"
[project.scripts] [project.scripts]
rb9704 = "rb9704tools.cli:main" rb9704 = "rb9704tools.cli:main"
rb9704-fake = "rb9704tools.fakemodem:main" rb9704-fake = "rb9704tools.fakemodem:main"
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
"""Host tools for the RockBLOCK 9704.""" """Host tools for the RockBLOCK 9704."""
__version__ = "0.1.0" __version__ = "0.1.0"
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
""" """
rb9704 - drive a RockBLOCK 9704 from the host over its USB-C port. rb9704 - drive a RockBLOCK 9704 from the host over its USB-C port.
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
""" """
rb9704-fake - a fake RockBLOCK 9704: JSPR over a serial port, no satellites. rb9704-fake - a fake RockBLOCK 9704: JSPR over a serial port, no satellites.
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
""" """
The test harness: a fake modem in a process of its own, and a console to The test harness: a fake modem in a process of its own, and a console to
drive whatever is under test. drive whatever is under test.
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
"""The rb9704 command line against the fake modem.""" """The rb9704 command line against the fake modem."""
import subprocess import subprocess
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
"""The fake modem on its own, in this process: no serial port, no library.""" """The fake modem on its own, in this process: no serial port, no library."""
import base64 import base64
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
""" """
Ground Control's own Python binding (the rockblock9704 package, the same C Ground Control's own Python binding (the rockblock9704 package, the same C
library this repository builds into Zephyr) against the fake modem on a pty. library this repository builds into Zephyr) against the fake modem on a pty.
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
""" """
A real RockBLOCK 9704, with --real-modem PORT. Free checks only: identity A real RockBLOCK 9704, with --real-modem PORT. Free checks only: identity
and signal, never a message, so nothing here costs airtime. Indoors the and signal, never a message, so nothing here costs airtime. Indoors the
+2
View File
@@ -1,3 +1,5 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
""" """
Zephyr, through the shell sample, against the fake modem: on native_sim Zephyr, through the shell sample, against the fake modem: on native_sim
with --zephyr-exe, on a board with --board-console and --board-modem. with --zephyr-exe, on a board with --board-console and --board-modem.
+1
View File
@@ -1,4 +1,5 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
cmake_minimum_required(VERSION 3.20.0) cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(rb9704_shell) project(rb9704_shell)
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* The rb9704 shell sample: `rb9704` on the console, and every message from * The rb9704 shell sample: `rb9704` on the console, and every message from
* the network, every finished send and every signal change printed as it * the network, every finished send and every signal change printed as it
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704_glue.h - what Ground Control's library needs declared on Zephyr. * rb9704_glue.h - what Ground Control's library needs declared on Zephyr.
* *
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704_internal.h - between this module's own files. * rb9704_internal.h - between this module's own files.
*/ */
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704_power.c - the board's control pins, as the devicetree gives them. * rb9704_power.c - the board's control pins, as the devicetree gives them.
* *
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704_serial.c - the library's serial port on a Zephyr UART. This is the * rb9704_serial.c - the library's serial port on a Zephyr UART. This is the
* whole port: five function pointers filled into the library's global * whole port: five function pointers filled into the library's global
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704_shell.c - `rb9704` on the Zephyr shell. * rb9704_shell.c - `rb9704` on the Zephyr shell.
* *
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704_shims.c - the library's three timing calls on the Zephyr kernel, * rb9704_shims.c - the library's three timing calls on the Zephyr kernel,
* in place of its crossplatform.c, which has no Zephyr branch. * in place of its crossplatform.c, which has no Zephyr branch.
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* rb9704_worker.c - the one thread that calls into Ground Control's library. * rb9704_worker.c - the one thread that calls into Ground Control's library.
* *
+1
View File
@@ -1,4 +1,5 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
cmake_minimum_required(VERSION 3.20.0) cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(rb9704_bridge) project(rb9704_bridge)
+1
View File
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: MIT /* SPDX-License-Identifier: MIT
* Copyright (c) 2026 Scott Penrose <scottp@dd.com.au>
* *
* A two-way UART bridge, for the test rig: every byte in on `host` goes out * A two-way UART bridge, for the test rig: every byte in on `host` goes out
* on `target`, and the other way round. With `host` a board's USB serial * on `target`, and the other way round. With `host` a board's USB serial