https://github.com/umi-eng/adapter
CAN FD Adapter firmware.
https://github.com/umi-eng/adapter
can-bus firmware rust
Last synced: 3 months ago
JSON representation
CAN FD Adapter firmware.
- Host: GitHub
- URL: https://github.com/umi-eng/adapter
- Owner: umi-eng
- License: mpl-2.0
- Created: 2024-05-21T20:06:03.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2026-03-20T20:54:35.000Z (4 months ago)
- Last Synced: 2026-03-21T11:44:06.615Z (4 months ago)
- Topics: can-bus, firmware, rust
- Language: Rust
- Homepage: https://umi.engineering/products/can-fd-adapter
- Size: 367 KB
- Stars: 33
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README

A single unified codebase for CAN adapters in many form factors.
Based on the gs_usb protocol, this firmware is plug and play on most recent linux systems.
| Feature | Supported? |
| -------------------------------------------- | -------------- |
| Loopback | No |
| Listen-only | No |
| Tripple-sampling | Yes |
| One-shot | Yes |
| Hardware timestamp | No |
| Bus error reporting | Yes |
| FD (ISO 11898-1:2015) | Yes |
| Bitrate switching | Yes |
| FD Non-ISO mode | No2 |
| Presume ACK | No2 |
| DLC value of 9..15 for 8 byte payload length | No2 |
| Transceiver dely compensation | No2 |
1. Not supported by STM32G4.
2. Not supported by the GS USB/CAN driver.
## Purchase
You can purchase CAN FD Adapters from our [online store](https://umi.engineering/products/can-fd-adapter).
## Firmware Update
The [UMI command line tool](https://umi.engineering/pages/command-line-tool) is the easiest way to get the latest firmare.
```shell
umi adapter update
```
Firmware can also be updated manually using a tool like [dfu-util](https://dfu-util.sourceforge.net/).
The latest firmware is available on the GitHub [releases page](https://github.com/umi-eng/adapter/releases/).
```shell
dfu-util -s 0x08000000:leave -D .bin
```
## Development
Prerequisites:
- [Rust](https://www.rust-lang.org/tools/install) with the `thumbv7em-none-eabihf` target
- [probe-rs](https://probe.rs/)
- [flip-link](https://github.com/knurling-rs/flip-link#installation)
### Debug
```shell
cargo run
```
### Build
```shell
cargo build --release
# Output firmware binary
cargo objcopy --release -- -O binary firmware.bin
# Prepare for DFU upload
dfu-suffix --vid 1d50 --pid 606f --add firmware.bin
```
### Release
1. Create a new PR preparing the release
2. Bump the version number in the `Cargo.toml`
3. Update `CHANGELOG.md` moving unreleased changes to the new version number heading
4. Merge the PR once CI passess successfully
5. `git tag -a vX.Y.Z -m vX.Y.Z`
6. `git push --tags`