1
1
Fork
You've already forked fuchsware
0
Firmware for a Draußenfuchs sender
  • Rust 100%
2025年09月22日 19:15:52 +02:00
.cargo Initial import 2025年08月23日 17:54:35 +02:00
src static → const 2025年09月22日 19:14:34 +02:00
.dir-locals.el Initial import 2025年08月23日 17:54:35 +02:00
.gitignore Initial import 2025年08月23日 17:54:35 +02:00
build.rs Add esp-config support 2025年09月15日 02:07:57 +02:00
Cargo.lock Add morse message support 2025年09月15日 02:15:58 +02:00
Cargo.toml Add morse message support 2025年09月15日 02:15:58 +02:00
COPYING Add COPYING 2025年09月15日 16:16:33 +02:00
esp_config.yml Improve wording on configuration description 2025年09月22日 19:15:52 +02:00
README.md Improve wording on configuration description 2025年09月22日 19:15:52 +02:00
rust-toolchain.toml Initial import 2025年08月23日 17:54:35 +02:00

fuchsware

Firmware for a Draußenfuchs sender.

Building and flashing

Install Rust including a toolchain for riscv32imc-unknown-none-elf. When using rustup, it should automatically read rust-toolchain.toml and download the required components.

Install espflash (but see below if you intend to debug the running code):

% cargo install --locked espflash cargo-espflash

Optionally, install esp-config if you want a menu-driven configuration interface:

% cargo install --locked --features=tui esp-config

To build, flash, and connect to monitor output in one go, run:

% cargo run --release

Configuration

The following configuration options are available:

Option Stability Default value Allowed values

FUCHSWARE_CONFIG_TONE_FREQUENCY

Frequency in Hertz of the emitted tone

⚠️ Unstable 440

FUCHSWARE_CONFIG_TX_DURATION_SECS

Duration in seconds to transmit a tone

⚠️ Unstable 10

FUCHSWARE_CONFIG_PAUSE_DURATION_SECS

Duration in seconds to pause transmission

⚠️ Unstable 5

FUCHSWARE_CONFIG_DIT_LEN_MS

Duration in milliseconds of a morsed "dit"

⚠️ Unstable 125

FUCHSWARE_CONFIG_MORSE_MESSAGE

Message to be morsed

⚠️ Unstable DL0UA

To override the defaults, specify them in the environment when building/running, e. g.:

% FUCHSWARE_CONFIG_MORSE_MESSAGE=DB0SDA cargo run --release

You may also use esp-config for a menu-driven interface. Warning: esp-config will clobber .cargo/config.toml, do not commit the resulting changes!

Debugging

To debug, you will need to substitute espflash with probe-rs.

  1. Install it
  2. Override the runner:
    % export CARGO_TARGET_RISCV32IMC_UNKNOWN_NONE_ELF_RUNNER='probe-rs run --chip=esp32c3 --preverify --always-print-stacktrace --no-location --catch-hardfault'
    
  3. Build/run without espflash, but with probe-rs feature:
    % cargo run --features=probe-rs --no-default-features
    

See probe-rs documentation on how to connect a debugger.

Orthogonally to the above, a debug feature is available. When active, instead of going into power-saving deep sleep, the program will stay active and simply loop after a delay. This way, your monitor/debugger can stay active, as the debugging stub on the controller is also shut down when entering deep sleep.

To use both at once:

% cargo run --features=probe-rs,debug --no-default-features