Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
github.com/jonlamb-gh/air-gradient-pro-rs
Firmware and tools for the AirGradient PRO kit with some modifications.
The firmware is written in Rust and uses the RTIC framework.
I've modified an AirGradient PRO kit (PCB Version 3.7) mainly so I can have a wired ethernet connection.
Significant differences from stock:
The build.rs file handles generating build-time configuration values based on the github repository and host environment variables.
The following environment variables can be set:
AIR_GRADIENT_IP_ADDRESS
: The device's IP address, default is 192.168.1.38
AIR_GRADIENT_MAC_ADDRESS
: The device's MAC address, default is 02:00:04:03:07:02
AIR_GRADIENT_DEVICE_ID
: An arbitrary 16-bit identifier, default is 0xFFFF
(DeviceId::DEFAULT
)AIR_GRADIENT_BROADCAST_PORT
: The port number to send the broadcast protocol data on, default is 32100
AIR_GRADIENT_BROADCAST_ADDRESS
: The IP address to send the broadcast protocol data to, default is 255.255.255.255
AIR_GRADIENT_DEVICE_PORT
: The port number the device protocol socket listens on, default is 32101
AIR_GRADIENT_LOG
: The max log level filter to use, default is Info
Update files (agp_images.cpio
) are generated by a custom linker (see its README)
as part of the build process (cargo build --release
).
air-gradient device update --address 192.168.1.38 path/to/agp_images.cpio
Initial flashing of the bootloader and firmware onto the board is currently done via SWD and an st-link.
The default memory.x file is setup to use firmware slot 0 in flash, which is also the default slot picked by the bootloader on initial setup.
You can use the Development Artifacts github action to build a custom-configured bootloader and firmware image in CI (click "Run workflow" and set the configuration fields) or grab the latest release with the default configuration from the Releases page.
cargo install probe-rs-cli
probe-rs-cli run --chip STM32F411CEUx --protocol swd path/to/bootloader
probe-rs-cli run --chip STM32F411CEUx --protocol swd path/to/air-gradient-pro
cargo install cargo-embed flip-link
cd bootloader/
cargo embed --release
cd firmware/
cargo embed --release
Log messages are available on pin PA11 (USART6 Tx), you should see output like the following:
************************************************************
agp-bootloader 0.1.0 (release)
Build date: Mon, 24 Apr 2023 14:28:38 +0000
Compiler: rustc 1.69.0 (84c898d65 2023-04-16)
Commit: 3023a001f2ab011406a3e58dd8e328cb4502737a
Reset reason: Software reset
Boot config slot: SLOT0
Update pending: false
Update valid: false
************************************************************
############################################################
air-gradient-pro-rs 0.2.0 (release)
Build date: Mon, 24 Apr 2023 14:35:08 +0000
Compiler: rustc 1.69.0 (84c898d65 2023-04-16)
Commit: 3023a001f2ab011406a3e58dd8e328cb4502737a
Serial number: 303233313036517042018
Device ID: 0x1 (1)
IP address: 192.168.1.38
MAC address: 02-00-04-03-07-02
Broadcast protocol port: 32100
Broadcast protocol address: 255.255.255.255
Device protocol port: 32101
Reset reason: Software reset
Update pending: false
############################################################
Setup: startup delay 5 seconds
Setup: boot config
Setup: S8 LP
Setup: PMS5003
Setup: I2C2
Setup: SH1106
Setup: SHT31
Setup: SGP41
Setup: ETH
Setup: TCP/IP
Setup: net clock timer
Setup: net poll timer
>>> Initialized <<<
The default Cargo runner for the bootloader and firmware is set to
renode-run
.
1.14.0+20231008gitebcb1b6b
)cargo install renode-run
sudo ./renode/setup-network.sh
AIR_GRADIENT_MAC_ADDRESS
is required to match
the renode-run configuration in Cargo.tomlexport AIR_GRADIENT_MAC_ADDRESS=02:00:04:03:07:04
export AIR_GRADIENT_IP_ADDRESS=192.0.2.80
cd firmware/
cargo run --release
NOTE: some of the measurement periods are inaccurate (like the S8 LP), need to read the docs again. Also, the relative start times are not accurate.
Pin | Peripheral | Board D1 Mini Header Pin | Description |
---|---|---|---|
PA11 | USART6 Tx | TX | Console/logger/panic-handler output |
PA12 | USART6 Rx | RX | Console input (not used currenlty) |
PA9 | USART1 Tx | D3 | senseAir S8 Rx |
PA10 | USART1 Rx | D4 | senseAir S8 Tx |
PA2 | USART2 Tx | D6 | PMS5003 Rx |
PA3 | USART2 Rx | D5 | PMS5003 Tx |
PB3 | I2C2 SDA | D1 | Shared I2C SCL : SH1106, SHT31, SGP41 |
PB10 | I2C2 SCL | D2 | Shared I2C SDA : SH1106, SHT31, SGP41 |
PB13 | SPI2 SCK | NC | ENC28J60 Eth SCK |
PB14 | SPI2 MISO | NC | ENC28J60 Eth MISO |
PB15 | SPI2 MOSI | NC | ENC28J60 Eth MOSI |
PB12 | GPIO Output | NC | ENC28J60 Eth CS |
PA8 | GPIO Input | NC | ENC28J60 Eth INT |
PB1 | GPIO Output | NC | ENC28J60 Eth RESET |
PC13 | GPIO Output | NC | On-board LED |
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.