RFM95W
HopeRF RFM95W LoRa module (Semtech SX1276) as an SPI register shell. No RF air link.
Live catalog
Prefer labwired_describe with the catalog id over guessing pins or addresses.
Status at a glance
| Aspect | Status |
|---|---|
| Catalog id | rfm95 |
| Bus | SPI (mode 0) |
| Address | — (NSS via cs_pin) |
| Source | configs/devices/rfm95.yaml (declarative, no Rust model) |
| Datasheet | Semtech SX1276/77/78/79 rev. 4, §4.3 SPI Interface, §6.1 Table 41; HopeRF RFM95/96/97/98(W) V1 |
| Tier | smoke-proven (register-level tests: crates/core/tests/everyday_sensor_set.rs) |
Pins / attachment
| Pin / net | Role |
|---|---|
| SCK / MOSI / MISO | SPI |
| NSS | cs_pin |
| DIO0..DIO5, RESET | Not modelled |
| 3.3V/GND | Power (digital twin) |
Support matrix
| Behavior | Status | Notes |
|---|---|---|
| Address byte: bit 7 = write, bits 6:0 = address | ✅ | |
| RegVersion 0x42 = 0x12, read-only | ✅ | The HopeRF V1 sheet prints 0x11 (earlier silicon) |
| Table 41 power-on values (RegOpMode 0x01, RegFrf 434 MHz, RegPaConfig 0x4F, …) | ✅ | FSK/OOK-mode values, as at power-on |
| Register storage (write, read back) | ✅ | |
| Burst auto-increment | ❌ | One byte per address frame |
| FSK ⇄ LoRa register banking, mode sequencing | ❌ | 0x0D–0x3F keep what they hold when LongRangeMode is set |
| RF air link, packet engine, FIFO, DIO interrupts, RSSI | ❌ | A transmit never produces a packet; TxDone never fires |
Stimulus
None — no measurement channel.
How to run
- Place the part and an MCU in Playground, or add it to a system YAML:
- Agent:
labwired_list→labwired_describe id=rfm95→ wire →labwired_validate→labwired_run/labwired_verify. - Register-level smoke:
cargo test -p labwired-core --test everyday_sensor_set— RegVersion, power-on RegOpMode / RegFrf / RegPaConfig / RegPaDac, and a RegOpMode write. The SPI negative control proves the check fails against a part that answers only 0x00 or only 0xFF;rfm95_tracks_stimulusstores a 915 MHz setup and checks RegVersion refuses a write.
Limitations
- Use this to check that a driver probes and configures the radio. It cannot show a link working; for that, see the
lora_sx1278shell's notes indocs/part-packs.md.
See the YAML header for the full datasheet trace and every named approximation.