Giter VIP home page Giter VIP logo

smk's Introduction

SMK

SMK - Small (device) Mechanical Keyboard Firmware

Build

This is a keyboard firmware similar to QMK, but targeting 8051-based devices like the Sinowealth SH68F90A (labeled as BYK916 or BYK901). It's aimed to be at least partially compatible with QMK configurations.

The S (Small) in SMK comes from this firmware using SDCC to build itself.

⚠️ WARNING ⚠️

This firmware is still highly experimental, so be cautious when trying to use it or extend it.

You can very easily end up with a bricked device if the written firmware can't jump back into ISP mode, so before testing or modifying it, it's best to have a full dump of your stock firmware and a tool (like the Sinolink) that can write it back.

Supported Devices

Keyboard MCU ISP USB Wireless Details
NuPhy Air60 v1 SH68F90A / BYK916 TBD Details
E-YOOSO Z11 SH68F90A / BYK901 N/A Details

Developing

Prerequisites

Nix

Currently, this project is primarily developed with the help of Nix and Nix flakes. Please consider using Nix and the provided flake to automatically set up a reproducible development environment.

With Nix installed and flakes enabled, use nix develop or direnv to enter a shell with all prerequisites installed.

Manual

If setting up prerequisites without nix, you will need the following tools installed and available within your environment:

Building & Flashing

Once all prerequisites are set up, you can build and flash firmware for a specific combination of keyboard and layout using the following commands:

meson setup build # configure meson build dir
meson compile -C build nuphy-air60_default_smk.hex # build firmware for nuphy-air60 with the default layout
meson compile -C build nuphy-air60_default_flash # write firmware to the device via sinowealth-kb-tool

Acknowledgements

smk's People

Contributors

carlossless avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smk's Issues

Code Options Clarification

Hey,

Was wondering if you could expand on what the Code Options described here represent? Struggling to find where they are referenced in the code. Are these similar to fuse bits on AVR? Was hoping to get a bit of a further explaination!

Thanks!

working on royal kludge rk61 rgb wired

Thank you for this! My rk61 is working beautifully with it, I traced the pcb connections between the key switches and the mcu. I haven't traced the led connections, though. I will probably post more details later, github blocked my main account with their 2fa crap and I'm going out of here to greener pastures for my taste (probably codeberg), but I want to report one bug that may affect you too and I "fixed" by changing line 70 of src/matrix.c to:

clear_keys(); action_layer=0;

instead of just "action_layer=0;". Otherwise my keyboard doesn't register the appropriate key release after pressing:

  1. press: momentary key (change layer)
  2. press: any key mapped on the new layer
  3. release: momentary key
  4. release: they key mapped on the new layer (2)

Thanks again,
Nicolas

Genesis Thor 300

Hey Carlossless, great work on the smk so far!
I was scouring the internet to find:

  • Genesis Thor 300 firmware as mine is jumbled upon dumping
  • Additional Firmware that could be used.

With support for the retro chip is scarce, finding info is a tad confusing.

Question is whether works on SMK are still ongoing?
How can I help to add Genesis Thor 300 and Hykker X Range to support for SMK?
I currently own 3 Genesis Thor 300 I bought for parts, so testing field is there ;)

Add `Dockerfile` for easier compilation

I am having problems compiling the project (like you always have with C projects...)

$ make
sdcc -mmcs51 -lmcs51 -V -mmcs51 --model-small --xram-size 0x1000 --xram-loc 0x0000 --code-size 0xf000  --std-c2x -I../include -DDEBUG=1 -DFREQ_SYS=24000000 -DWATCHDOG_ENABLE=1 -DUSB_VID=0x258a -DUSB_PID=0x00f4 -DSMK_VERSION=alpha -c src/pwm.c -o obj/pwm.rel
+ /usr/bin/sdcpp -nostdinc -Wall -std=c11 -I../include -DDEBUG=1 -DFREQ_SYS=24000000 -DWATCHDOG_ENABLE=1 -DUSB_VID=0x258a -DUSB_PID=0x00f4 -DSMK_VERSION=alpha -obj-ext=.rel -D__SDCC_CHAR_UNSIGNED -D__SDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -D__SDCC=4_0_0 -D__SDCC_VERSION_MAJOR=4 -D__SDCC_VERSION_MINOR=0 -D__SDCC_VERSION_PATCH=0 -D__SDCC_REVISION=11528 -D__SDCC_mcs51 -D__STDC_NO_COMPLEX__=1 -D__STDC_NO_THREADS__=1 -D__STDC_NO_ATOMICS__=1 -D__STDC_NO_VLA__=1 -D__STDC_ISO_10646__=201409L -D__STDC_UTF_16__=1 -D__STDC_UTF_32__=1 -isystem /usr/bin/../share/sdcc/include/mcs51 -isystem /usr/share/sdcc/include/mcs51 -isystem /usr/bin/../share/sdcc/include -isystem /usr/share/sdcc/include  src/pwm.c
src/pwm.c:144: syntax error: token -> '0b010' ; column 58
src/pwm.c:151: syntax error: token -> '0b010' ; column 47
src/pwm.c:158: syntax error: token -> '0b010' ; column 47
src/pwm.c:161: syntax error: token -> '0b010' ; column 47
src/pwm.c:169: syntax error: token -> '0b010' ; column 25
src/pwm.c:176: syntax error: token -> '0b010' ; column 25
src/pwm.c:183: syntax error: token -> '0b010' ; column 25
src/pwm.c:186: syntax error: token -> '0b010' ; column 25
make: *** [Makefile:65: obj/pwm.rel] Error 1

Having a docker file for compiling the project would help tremendously.

device: eyooso-z11

  • MCU: BYK901(-0997A) (IDs as sh68f90a)
  • Wireless: None
  • LEDs: Single color (yellow), PWM controlled
PCB MCU JTAG Setup
e-yooso-z11-pcb e-yooso-z11-mcu e-yooso-z11-jtag

How to build this for redragon k631

unfortunately you left no guide or hints, I have several copies of this keyboard and I have a place to dump the original flash memory if something happens, I will be glad to be a guinea pig.

Redragon K631 troubleshooting

In general, after one sleepless night I managed to compile this firmware without even killing the bootloader.
I already have one bug and a couple of questions.
The bug is that when pressing the keys "F" or "G" once in 3-5 presses these keys work as the key "A"
I also want to know how I can control keyboard backlighting at least from terminal and ideally add it to openrgb.
I have added my configuration in a separate fork, any help would be welcome.

About Wireless

I also have a nuphy60 v1 keyboard. Can I assist with Bluetooth or 2.4G support and what should I pay attention to

Same chip on RK71

Hi, I have same chip BYK916 on my Rk71 keyboard, want to port QMK.
Can i contribute with anything

Working on the Machenike B500-K61

Support for this is already in sinowealth-kb-tool, and Rangoli. And so writing a layout shouldn't be hard at all, I just don't own a arduino at the moment to reflash the keyboard (I own several esp32's and rp2040s, but no arduinos) and I'm scared of bricking it at the moment. This will be a placeholder issue untill I either piece together the information from the Royal Kludge software (because, i guess they all use the same software), or I trace all of the traces on the board & buy a Arduino (which I don't wanna do).

Cfg.ini from K500 software (probably very useful): https://pastebin.com/tAKybZS0

Discord?

Hey! Just wondering if they'd ever be a discord for this project, i feel it could be beneficial, it could make the community for smk bigger, and people don't have to make more github issues asking for help lol. I understand if you'd like to keep it smaller and having a discord might put a bit of pressure on you. I could help set it up. If you don't want to make a discord that's completely fine. Just a suggestion!
Thanks!

Need some help

Hey! So I recently got this E-yooso Z11 for $3 (yes really), smk seems quite interesting so I thought why not test it, i do not have reflashing tools so if I mess up it's kinda game over for the kb, but i can just buy another $3 one. I'm willing to install it i just need some help figuring out how lol, Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.