carlossless / sinowealth-kb-tool

A utility for reading and writing flash contents on Sinowealth 8051-based HID devices through the commonly found ISP bootloader
MIT License
54 stars 15 forks source link

[device-report] RK68 ISO Return #15

Closed DramaTisxh closed 3 months ago

DramaTisxh commented 9 months ago

Sorry if this is useless information

I think it can't go into isp mode for whatever reason. Since I'm not really into all the stuff you did I have no idea what can be done😥

(I saw a few people wanting qmk on their rk keyboards with the BYK916 - including me - and I didn't find a way to do it so I thought your project is the closest there is to it, yet I'm stuck again) I just want to have layers on my keyboard without needing any software☹️

pub const PART_RK_68_ISO_RETURN: Part = Part { flash_size: ?, bootloader_size: ?, page_size: ?, vendor_id: 0x258a, product_id: 0x00a9, };

carlossless commented 9 months ago

@DramaTisxh have you confirmed that this keyboard is based on a BYK916? I saw that other RK keyboards like some versions of the RK61 are based on a BYK916/SH68F90, but no mention of RK68.

In case it is a BYK916, I'm working on a custom (qmk-like) firmware for keyboards that are based on SH68F90/SH68F90A in https://github.com/carlossless/sh68f90a-experiments, although my initial aim is to only support the nuphy-air60 v1 which I own myself.

DramaTisxh commented 9 months ago

There is "BYK916" printed on the mcu. I would be willing to learn and invest time into also porting your project to the RK68 etc., but as I said currently my knowledge is very limited regarding that stuff (I'm usually home in java - nothing regarding hardware).

carlossless commented 9 months ago

@DramaTisxh can you share the logs you get from trying to run sinowealth-kb-tool on your device?

It's possible that your device doesn't have an ISP bootloader or uses a different method to boot into it. We would need to look at a full dump of the firmware to make sure. If you have an arduino handy and comfortable wiring up JTAG pins you could try using https://github.com/gashtaan/sinowealth-8051-dumper to get that dump.

DramaTisxh commented 9 months ago

I have an esp32. I don't know if it can be done with that but I am willing to try. Maybe there is even some kind of software to run arduino code on an esp32 or similar so that I don't have to do any work. I'll take a look at it in the next couple of days. Maybe I'll buy an arduino if I cannot do it with the esp and find one for cheap. Thank you so far for your help and your work. I admire what you did so far😁 Oh and I'll send you the logs in a sec @carlossless

Edit:

Looking for vId:0x258a pId:0x00a9 2023-11-06T20:04:47.907Z DEBUG [sinowealth_kb_tool::isp] Opening: "\\?\HID#VID_258A&PID_00A9&MI_01&Col05#7&288676a8&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}" 2023-11-06T20:04:47.913Z INFO [sinowealth_kb_tool::isp] Found Regular device. Entering ISP mode... 2023-11-06T20:04:47.915Z INFO [sinowealth_kb_tool::isp] Regular device not found. Trying ISP device... 2023-11-06T20:04:48.480Z INFO [sinowealth_kb_tool::isp] Retrying... Attempt 2/10 2023-11-06T20:04:48.525Z INFO [sinowealth_kb_tool::isp] Looking for vId:0x258a pId:0x00a9 2023-11-06T20:04:48.526Z DEBUG [sinowealth_kb_tool::isp] Opening: "\\?\HID#VID_258A&PID_00A9&MI_01&Col05#7&288676a8&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}" 2023-11-06T20:04:48.532Z INFO [sinowealth_kb_tool::isp] Found Regular device. Entering ISP mode... 2023-11-06T20:04:48.533Z INFO [sinowealth_kb_tool::isp] Regular device not found. Trying ISP device... 2023-11-06T20:04:49.079Z INFO [sinowealth_kb_tool::isp] Retrying... Attempt 3/10 [...] 2023-11-06T20:04:58.379Z ERROR [sinowealth_kb_tool] Device not found

carlossless commented 9 months ago

Yep, nothing unusual about the logs. Let me know if you can manage to get a firmware dump from your device!

DramaTisxh commented 9 months ago

I think I'll buy an arduino for cheap on aliexpress. I'll give an update when I got something out of the mcu. I guess it's probably gonna take a month alone for shipping tho

carlossless commented 7 months ago

@DramaTisxh I believe I fixed the issue that you were facing in #26. Would you mind giving it another try with the latest version of this tool?

DramaTisxh commented 7 months ago

@carlossless

firmware_size: 61440,
bootloader_size: 4096,
page_size: 2048,
vendor_id: 0x258a,
product_id: 0x00a9,
isp_index: 0,

reading seems to work🎉

carlossless commented 7 months ago

@DramaTisxh great! Can you please read the bootloader with --bootloader and share the MD5 (checksum) value?

Dregu commented 6 months ago

I stumbled here hoping to make my ANSI RK68/855 white led 2021/02/26 REV:01 useful some day, cause the stock firmware is so bad I can't use if for anything.

This tool works well. I dumped backups, flashed the completely wrong smk version cause I was feeling brave and this kb is already dead to me. It blinded me, some keys worked, but matrix was obviously completely wrong, restored backup, didn't brick anything.

The bootloader for this ANSI version is cfc8661da8c9d7e351b36c0a763426aa, chip BYK901, vendor 258a, product 008b.

I have no idea how to make an smk layout for this, but I hope someone will some day.

carlossless commented 6 months ago

Thanks for the report @Dregu!

As a sidenote - I just came to realize how many different versions of RK68 actually exist out there. This list in the rangoli project is very useful.

I have no idea how to make an smk layout for this, but I hope someone will some day.

It's actually just a matter of figuring out which rows and columns of the key matrix (and led matrix) are connected to which pins on the MCU.

It should be doable with at least an understanding of basic eletronics (diodes, transistors, PWM led control) and a multimeter with a continuity test function.