sinowealth-kb-tool
所属分类:单片机开发
开发工具:Rust
文件大小:0KB
下载次数:0
上传日期:2023-07-19 22:21:51
上 传 者:
sh-1993
说明: 一款基于财富微控制器的键盘编程工具,
(A tool to program sinowealth mcu based keyboards,)
文件列表:
.envrc (10, 2023-12-23)
Cargo.lock (12863, 2023-12-23)
Cargo.toml (723, 2023-12-23)
LICENSE (1065, 2023-12-23)
flake.lock (4255, 2023-12-23)
flake.nix (2016, 2023-12-23)
rust-toolchain.toml (146, 2023-12-23)
rustfmt.toml (65, 2023-12-23)
src/ (0, 2023-12-23)
src/ihex.rs (4184, 2023-12-23)
src/isp.rs (12991, 2023-12-23)
src/main.rs (6690, 2023-12-23)
src/part.rs (3533, 2023-12-23)
src/util.rs (913, 2023-12-23)
tools/ (0, 2023-12-23)
tools/functional-test.sh (3821, 2023-12-23)
# sinowealth-kb-tool
[![crate](https://img.shields.io/crates/v/sinowealth-kb-tool.svg)](https://crates.io/crates/sinowealth-kb-tool) [![ci](https://github.com/carlossless/sinowealth-kb-tool/actions/workflows/push.yml/badge.svg)](https://github.com/carlossless/sinowealth-kb-tool/actions/workflows/push.yml)
A utility for reading and writing flash contents on Sinowealth 8051-based devices (keyboards and mice) since they all seem to have similar ISP bootloaders.
## Disclaimer
This is an experimental tool, so use it at your own risk.
## Usage
Read [here](https://github.com/carlossless/sinowealth-kb-tool/issues/19) for ISP quirks.
### Reading
Reading is not entirely an idempotent operation. A read operation can change values in the `0xeffb - 0xeffd` region.
The ISP bootloader will blank out bytes in the `0xeffb - 0xeffd` region, therefore the produced dump might not reflect the actual state in ROM.
```sh
# reads firmware excluding isp bootloader
sinowealth-kb-tool read -p nuphy-air60 foobar.hex
# reads only isp bootloader section
sinowealth-kb-tool read -p nuphy-air60 -b bootloader.hex
# full dump including firmware and bootloader
sinowealth-kb-tool read -p nuphy-air60 --full full.hex
# custom device
sinowealth-kb-tool read \
--flash_size 61440 \
--bootloader_size 4096 \
--page_size 2048 \
--vendor_id 0x05ac \
--product_id 0x024f \
foobar.hex
```
### Writing
```sh
# overwrites firmware (does not touch the bootloader section)
sinowealth-kb-tool write -p nuphy-air60 foobar.hex
# custom device
sinowealth-kb-tool write \
--flash_size 61440 \
--bootloader_size 4096 \
--page_size 2048 \
--vendor_id 0x05ac \
--product_id 0x024f \
foobar.hex
```
## Supported Hardware
| Keyboard | ISP MD5 | MCU | MCU Label | Tested Read | Tested Write |
| -------- | ------- | --- | --------- | ----------- | ------------ |
| [NuPhy Air60](https://nuphy.com/products/air60) | 3e0ebd0c440af5236d7ff8872343f85d | SH68F90A | BYK916 | | |
| [NuPhy Air75](https://nuphy.com/products/air75) | 3e0ebd0c440af5236d7ff8872343f85d | SH68F90A | BYK916 | | |
| [NuPhy Air96](https://nuphy.com/products/air96-wireless-mechanical-keyboard) | 3e0ebd0c440af5236d7ff8872343f85d | SH68F90A | BYK916 | | |
| [NuPhy Halo65](https://nuphy.com/products/halo65) | 3e0ebd0c440af5236d7ff8872343f85d | SH68F90A | BYK916 | | |
| Terport TR95 | 2d169670eae0d36eae8188562c1f66e8 | SH68F90A | BYK916 | | |
| [Redragon K617 FIZZ 60%](https://www.redragonzone.com/collections/keyboard/products/redragon-k617-fizz-60-wired-rgb-gaming-keyboard-61-keys-compact-mechanical-keyboard) | 2d169670eae0d36eae8188562c1f66e8 | SH68F90A | BYK916 | | |
| Xinmeng K916 | cfc8661da8c9d7e351b36c0a763426aa | SH68F90 | | | |
| Hykker X Range 2017 (RE-K70-BYK800) | 13df4ce2933f9654ffef80d6a3c27199 | SH68F881 | BYK801 | | |
## Prerequisites
### Linux
To enable running this tool without superuser privileges add the following udev rule with `xxxx` and `yyyy` replaced with your device Vendor ID and Product ID respectively.
```udev
# /etc/udev/rules.d/plugdev.rule
SUBSYSTEMS=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", MODE="0660", GROUP="plugdev"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0603", ATTRS{idProduct}=="1020", MODE="0660", GROUP="plugdev"
```
Make sure your user is part of the `plugdev` group.
## Acknowledgments
* https://github.com/gashtaan/sinowealth-8051-dumper
* https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater
近期下载者:
相关文件:
收藏者: