Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
0432e56
part.rs: Add RE-K70-BYK800 board (#1)
swiftgeek May 21, 2023
cfd246b
document RE-K70-BYK800 in readme
carlossless May 21, 2023
94e414d
cargo fmt
carlossless May 21, 2023
d2a36bd
corrected hykker sinowealth part number - SH68F881
carlossless May 21, 2023
ada90ee
testing out auto_detach_kernel_driver
carlossless May 21, 2023
a328231
remove accidentally duplicated device open calls
carlossless May 21, 2023
eb91b20
rename programmer to isp
carlossless May 21, 2023
a3ec2a9
add linux prerequisites to readme
carlossless May 21, 2023
5a0bb6e
MD5 printout & Xinmeng K916 isp bootloader hash (#3)
carlossless Jun 16, 2023
8b932ca
md5sum from binary and xinmeng MD5 fix
carlossless Jun 16, 2023
f440d72
md5sum for nuphy-halo65
carlossless Jun 17, 2023
68c156b
GitHub Actions to build and release (#4)
carlossless Jun 19, 2023
81ec8a8
cargo description update
carlossless Jun 19, 2023
f36c41d
readme updates and verfication code rework
carlossless Jun 19, 2023
c2dd2c2
grab version from CARGO_PKG_VERSION
carlossless Jul 8, 2023
047efe4
updated simple_logger to remove atty
carlossless Jul 9, 2023
94ac0b6
more limited and defined ihex handling (#5)
carlossless Jul 19, 2023
eb86331
Air75 Read Support Confirmed (#6)
donn Aug 8, 2023
31be470
NuPhy Air96 (#9)
carlossless Aug 20, 2023
0fa7bb5
hidapi instead of libusb (windows support) (#10)
carlossless Aug 27, 2023
6dce877
added status badges
carlossless Aug 29, 2023
019c874
distribution through nix flake (#11)
carlossless Sep 30, 2023
c5ec616
add delays between retries
carlossless Oct 6, 2023
301a232
bind nix packages to 23.05
carlossless Oct 7, 2023
464cd7c
basic from_ihex unit tests
carlossless Oct 20, 2023
82915f0
Bump rustix from 0.38.8 to 0.38.20 (#12)
dependabot[bot] Oct 20, 2023
b6b0ae9
more descriptive addr_too_high error
carlossless Oct 20, 2023
27ee6e7
device typo fix
carlossless Nov 4, 2023
ebc0de0
device: terport-tr95 (#14)
carlossless Nov 5, 2023
fa81482
Arguments for reading/writing to custom devices (#17)
carlossless Dec 3, 2023
9ae9864
updated usage and removed -f flag (--full remains)
carlossless Dec 3, 2023
66f46f2
check firmware prior to writing, disclaimer updates in readme, functi…
carlossless Dec 3, 2023
382aa17
bump to v0.0.4
carlossless Dec 3, 2023
c393f03
device: redragon-k6170-fizz (#23)
carlossless Dec 10, 2023
fa24092
corrected ISP behaviour, documented commands (#22)
carlossless Dec 11, 2023
57fccdc
bump to v0.0.5
carlossless Dec 11, 2023
92aaa0e
device: redragon-k614-anivia (#24)
usr44 Dec 19, 2023
1b26ab0
device selection by HID usage_page, usage and the index which matchin…
carlossless Dec 20, 2023
c8fe17a
bump to v0.0.6
carlossless Dec 20, 2023
d174e51
fmt
carlossless Dec 21, 2023
b9c4961
device: royalkludge-rk100 (#27)
carlossless Dec 21, 2023
efd0250
device: genesis-thor-300 (#30)
carlossless Dec 21, 2023
0687437
device: genesis-thor-300-rgb (#33)
carlossless Dec 23, 2023
050d2ac
Added device report issue template
carlossless Dec 23, 2023
7f7c8f1
sort possible part values
carlossless Dec 23, 2023
30de388
usage_page and usage arguments (#35)
carlossless Dec 23, 2023
3a9f81d
reeneable uhubctl
carlossless Dec 23, 2023
817c286
device: weikav-sugar65 (#32)
carlossless Dec 23, 2023
37c3db7
bump to 0.0.7
carlossless Dec 23, 2023
d716323
update device report issue template
carlossless Dec 23, 2023
93f450e
tests for verify function
carlossless Dec 24, 2023
fadbd58
allow hex values for all numeric arguments (#36)
carlossless Dec 27, 2023
a8ab437
device: royalkludge-rk61 (#39)
carlossless Jan 4, 2024
5a6f9f0
add RK61 product page
carlossless Jan 4, 2024
b9cd771
reorder devices/parts
carlossless Jan 6, 2024
90687de
device: digitalalliance-meca-warrior-x (#41)
carlossless Jan 6, 2024
8e890e9
setting & using a specific interface number (#43)
carlossless Jan 12, 2024
051102c
fix argument references
carlossless Jan 12, 2024
bb43762
flake update (nixpkgs-23.11)
carlossless Jan 12, 2024
a48503f
simple_logger update and configurable DEBUG flag
carlossless Jan 12, 2024
5bd3211
bump to 0.0.8
carlossless Jan 12, 2024
4a8af5b
device: xinmeng-xm-rf68 (#42)
carlossless Jan 13, 2024
accb9e4
device: royalkludge-rk71 (#34)
carlossless Jan 14, 2024
3b30708
lint on ci (#44)
carlossless Jan 14, 2024
93c427c
device: royalkludge-rk68 (ISO Return, BT Dual Mode) (#31)
carlossless Jan 24, 2024
75f964e
rust -> 1.76
carlossless Feb 25, 2024
0ff0965
flake updates
carlossless Feb 25, 2024
68a6f6a
reboot functionality, win device enumeration fix, list hid devices, r…
carlossless Mar 9, 2024
87ed686
bump to 0.0.9
carlossless Mar 9, 2024
ca6cce8
change job name
carlossless Mar 9, 2024
f4d1592
rebooting by the default for all known devices/bootloaders (#48)
carlossless Mar 10, 2024
e483311
device: redragon-k641-shaco-pro (#51)
carlossless Mar 22, 2024
a8c59dd
device: trust-gxt-960 (#54)
carlossless Mar 23, 2024
5eae7ee
support for bootloaders with pid 0x1021 (#55)
carlossless Mar 23, 2024
51a3e43
device: glorious-model-o (#56)
carlossless Mar 23, 2024
d2fa17c
readme: share write tested state between all bootloaders (#57)
carlossless Mar 23, 2024
0b589fb
issue template update
carlossless Mar 23, 2024
92c9baf
device: machenike-k500-b61 (#59)
carlossless Mar 29, 2024
418f8ab
machenike-k500-b61: set correct isp_index
carlossless Mar 29, 2024
c4b4ed0
updated crate description
carlossless Mar 29, 2024
14f1295
bump to 0.0.10
carlossless Mar 29, 2024
99f8389
add a blank bug-report template
carlossless Mar 29, 2024
d6907be
document macos failure for bootloader 620f0b
carlossless Apr 6, 2024
7c7646a
device: redragon-k530-draconic-pro (#62)
carlossless Apr 7, 2024
03f3f23
device: eyooso-z11 (#69)
carlossless Apr 14, 2024
8d1a66f
device: redragon-k658-pro-se (#63)
carlossless Apr 14, 2024
2dd7cac
normalize list format for linux and other platforms
carlossless Apr 16, 2024
1439ceb
device: royalkludge-rkg68 (#75)
carlossless Apr 27, 2024
aa1fcc3
device: xinmeng-m71 (and yunzii-al71) (#76)
carlossless Apr 27, 2024
c3033d4
device: add leobog hi75 (#74)
Mooyeee Apr 28, 2024
0c7ab78
error logging for enter_isp_mode
carlossless Apr 28, 2024
af0eaec
bump to 0.0.11
carlossless Apr 28, 2024
9e6c26a
issue template update
carlossless Apr 28, 2024
0223da9
device: kzzi-k68pro (#78)
XusMochizuki May 13, 2024
03119a3
lint fixes, part reordering (also in readme) and marking kzzi-k68pro …
carlossless May 13, 2024
dfa949f
Added support for Aula F87 (#79)
Aldnoa19 Jun 7, 2024
8df94c6
update write status for Aula F87
carlossless Jun 24, 2024
6e02ea7
device: deltaco-wk95r (#81)
carlossless Jun 24, 2024
942bad0
feature: payload conversion (to jtag and to isp) + flake, rust update…
carlossless Jul 9, 2024
8c205ca
bump to 0.1.0
carlossless Jul 9, 2024
a882d49
update bootloader findings for genesis-thor-300 bootloader
carlossless Jul 11, 2024
f082d48
confirmed usability on linux with genesis-thor-300
carlossless Jul 11, 2024
f754d06
sorting all hid devices by their paths (#84)
carlossless Jul 16, 2024
b43377e
github action updates (#85)
carlossless Jul 16, 2024
200d434
device: yunzii-al66 / xinmeng-m66 (#86)
BrianPugh Jul 20, 2024
deb107d
Update README.md (#87)
RoadRoller01 Jul 31, 2024
bab108b
device: portronics-hydra10 (#89)
carlossless Sep 16, 2024
a15443c
device: redragon-k633-ryze (#91)
carlossless Oct 1, 2024
a2a8526
device: redragon-k630-norgb (#94)
Dravelz-21 Dec 13, 2024
8a5a545
flake and cargo dep updates
carlossless Dec 13, 2024
2c72ad6
device: yinren-r108 (#99)
jglim Jan 15, 2025
145b353
device: aula-f75 (#97)
carlossless Jan 15, 2025
7b291f2
flake update
carlossless Apr 27, 2025
c6f4b22
device: magegee-mkstar61 (#102)
carlossless Apr 27, 2025
50f1eba
feature: device selection by report id (#103)
carlossless May 3, 2025
82f9173
bump to 1.0.0
carlossless May 3, 2025
2125249
ui improvements and integration tests (#104)
carlossless May 3, 2025
4f5c284
refactoring, renaming and ui improvements (#105)
carlossless May 4, 2025
d415f43
device lookup, retry only in specfic cases, readme update (#106)
carlossless May 4, 2025
38fde56
nix check fix
carlossless May 4, 2025
2137297
disable nix checks
carlossless May 4, 2025
6508e9a
flake update, nix build actions (#107)
carlossless Jun 7, 2025
dffac13
switch hidparser to v1.0.2
carlossless Jun 7, 2025
510f260
update device report template (#108)
carlossless Jun 8, 2025
0b37b70
hidparser: 1.0.2 -> 1.0.3
carlossless Jun 9, 2025
efa55fc
check operation code instead of setting it
carlossless Jun 28, 2025
21d9d24
cleanup unnecessary map_errs
carlossless Jun 28, 2025
8046f9b
device: redragon-k618 (#110)
carlossless Jul 6, 2025
8589dd0
update -b to -s/--section
carlossless Jul 21, 2025
c066289
device: eyooso-z82 (#112)
carlossless Jul 22, 2025
8cf6afe
fix: wrong platform expectation for sh68f881 (#114)
carlossless Aug 2, 2025
f568bd4
bump to 1.0.1
carlossless Aug 2, 2025
80e485d
flake update
carlossless Dec 21, 2025
dfaf7c8
added mcu part number for glorious model o
carlossless Jan 12, 2026
5f6fc9c
allow convert to work on full dumps
carlossless Jan 19, 2026
3077542
device: eweadn-v20 (#120)
carlossless Jan 25, 2026
e20f6c4
fix --full reference in readme
carlossless Jan 29, 2026
38de0f7
device: redragon-k652-pro (#121)
carlossless Feb 9, 2026
656e855
simple_logger bump
carlossless Feb 15, 2026
f78bd65
device: dierya-dk68se
Apr 12, 2026
33c00a2
Update README.md
neduard Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
name: Bug Report
about: For reporting an encountered issue
title: "[bug] Manufacturer Model"
labels: bug
assignees: ''

---
73 changes: 73 additions & 0 deletions .github/ISSUE_TEMPLATE/device-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
name: Device Report
about: For reporting operation with a particular device
title: "[device-report] Manufacturer Model"
labels: device-report
assignees: ''

---

## Device Info

- Sinowealth Device: _example `SH68F90A`_
- IC Label: _example `BYK916`_
- Product Page: _example https://nuphy.com/products/air60_

## Part Info

```
plarform: sh68f90
vendor_id: 0xdead
product_id: 0xcafe
firmware_size: 61440 # necessary if not default, otherwise remove this line
bootloader_size: 4096 # necessary if not default, otherwise remove this line
page_size: 2048 # necessary if not default, otherwise remove this line
isp_iface_num: 1 # necessary if not default, otherwise remove this line
isp_report_id: 5 # necessary if not default, otherwise remove this line
reboot: false # necessary if not default, otherwise remove this line
```

## Operations Tested

- [ ] Read
- [ ] Write

## Platforms Tested

- [ ] linux
- [ ] macos
- [ ] windows

## Checksums

- Stock Firmware MD5: `deadbeefdeadbeefdeadbeefdeadbeef`
- Bootloader MD5: `beefcafebeefcafebeefcafebeefcafe` _(shown when running `sinowealth-kb-tool read -s bootloader ...`)_

## Device Info (HID Reports)

Output when running `sinowealth-kb-tool list --vendor_id=<PID> --product_id=<PID>`

<details>
<summary>Output</summary>

```
sinowealth-kb-tool list --vendor_id=0x05ac --product_id=0x024f
ID 05ac:024f manufacturer="contact@carlossless.io" product="SMK Keyboard"
path="DevSrvsID:4294974930" interface_number=0
report_descriptor=[05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 75 01 95 08 81 02 75 08 95 01 81 01 05 07 19 00 29 FF 15 00 26 FF 00 75 08 95 06 81 00 05 08 19 01 29 05 15 00 25 01 75 01 95 05 91 02 75 03 95 01 91 01 C0]
feature_report_ids=[]
usage_page=0x0001 usage=0x0006
path="DevSrvsID:4294974929" interface_number=1
report_descriptor=[05 01 09 80 A1 01 85 01 19 81 29 83 15 00 25 01 75 01 95 03 81 02 95 05 81 01 C0 05 0C 09 01 A1 01 85 02 19 00 2A 3C 02 15 00 26 3C 02 75 10 95 01 81 00 C0 06 00 FF 09 01 A1 01 85 05 19 01 29 02 15 00 26 FF 00 75 08 95 05 B1 02 C0 05 01 09 06 A1 01 85 06 05 07 19 E0 29 E7 15 00 25 01 75 01 95 08 81 02 05 07 19 00 29 9F 15 00 25 01 75 01 95 A0 81 02 C0]
feature_report_ids=[5]
usage_page=0x0001 usage=0x0006
usage_page=0x0001 usage=0x0080
usage_page=0x000c usage=0x0001
usage_page=0xff00 usage=0x0001
```

</details>

## PCB Photos

_If possible, include photos of your device PCB clearly showing MCU and wireless IC labels_
145 changes: 134 additions & 11 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,142 @@
name: Test & Build

on: [push]

name: CI
env:
CARGO_TERM_COLOR: always

defaults:
run:
# necessary for windows
shell: bash

jobs:
build_and_test:
name: Rust project
nix-build:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: cachix/install-nix-action@v31
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: cachix/cachix-action@v14
with:
name: sinowealth-kb-tool
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build

lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cargo cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
./target
key: test-cargo-registry
- name: Lint
run: cargo fmt -- --check

test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cargo cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
./target
key: test-cargo-registry
- name: Install and configure dependencies
run: |
sudo apt-get install -qq libusb-1.0.0-dev
- name: Run tests
run: cargo test --bins --verbose

build:
strategy:
fail-fast: false
matrix:
include:
- TARGET: x86_64-unknown-linux-gnu
OS: ubuntu-latest
- TARGET: x86_64-apple-darwin
OS: macos-latest
- TARGET: x86_64-pc-windows-msvc
OS: windows-latest
needs: test
runs-on: ${{ matrix.OS }}
env:
NAME: sinowealth-kb-tool
TARGET: ${{ matrix.TARGET }}
OS: ${{ matrix.OS }}
steps:
- uses: actions/checkout@v4
- name: Cargo cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
./target
key: build-cargo-registry-${{matrix.TARGET}}
- name: Install and configure dependencies
run: |
# dependencies are only needed on ubuntu as that's the only place where
# we make cross-compilation
if [[ $OS =~ ^ubuntu.*$ ]]; then
sudo apt-get install -qq libusb-1.0-0-dev
fi
- name: Install rust target
run: rustup target add $TARGET
- name: Run build
run: cargo build --release --verbose --target $TARGET
- name: Compress
run: |
mkdir -p ./artifacts
# windows is the only OS using a different convention for executable file name
if [[ $OS =~ ^windows.*$ ]]; then
EXEC=$NAME.exe
else
EXEC=$NAME
fi
if [[ $GITHUB_REF_TYPE =~ ^tag$ ]]; then
TAG=$GITHUB_REF_NAME
else
TAG=$GITHUB_SHA
fi
mv ./target/$TARGET/release/$EXEC ./$EXEC
tar -czf ./artifacts/$NAME-$TARGET-$TAG.tar.gz $EXEC
- name: Archive artifact
uses: actions/upload-artifact@v4
with:
name: result-${{ matrix.TARGET }}
path: |
./artifacts

release:
if: startsWith(github.ref, 'refs/tags/v')
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v2
- name: Install libudev
run: sudo apt-get install -y libudev-dev
- uses: actions-rs/toolchain@v1
- name: Download artifacts
uses: actions/download-artifact@v4
with:
toolchain: stable
- uses: actions-rs/cargo@v1
pattern: result-*
merge-multiple: true
path: ./artifacts
- name: Release
uses: softprops/action-gh-release@v2
with:
command: build
args: --release --all-features
draft: true
generate_release_notes: true
files: ./artifacts/*.tar.gz
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
.DS_Store

/.direnv/
/.direnv
/result

/private

/target

*.hex
Loading