qmk / qmk_firmware

Open-source keyboard firmware for Atmel AVR and Arm USB families
https://qmk.fm
GNU General Public License v2.0
17.81k stars 38.16k forks source link

dactyl split keyboard - slave not responding #9697

Closed shiftux closed 4 years ago

shiftux commented 4 years ago

would love some help in debugging why the slave of my dactyl is not responding...

keyboard: dactyl-manuform 5x6 MCU: 2x pro micro USB connected to left side, TRS jack linking right (slave) side

#define USE_SERIAL
#define MASTER_LEFT

adapted keymap and 5x6.h and added a rotary encoder, otherwise all default code.

what i did so far:

-> it seems to me that it's a software issue, but I can't pinpoint it

any help is much appreciated

shiftux commented 4 years ago

to be really sure i checked out the qmk repo clean, compiled and flashed the dactyl manuform 5x6 default keymap. same behaviour, left side (master) is working, slave is not. if i plug the right side instead of left, it in turn behaves as if it were a left side (QWERT keys) and the other side is dead. and i don't think it's a wiring issue. i double checked, the TRS connection pin is in PD0 (default) on both and checking the connection with a multimeter gives me the connection beep.

i think the current code might not be correct

shiftux commented 4 years ago

SOLVED IT !!!!!

The thread that guided me to the solution was this: https://www.reddit.com/r/olkb/comments/c0006h/dactylmanuform_wlets_split_firmware_slave_side/erb2y5l/

I ended up defining the following in config.h

#define USE_SERIAL

#define MASTER_LEFT

#define SPLIT_USB_DETECT
#define SPLIT_USB_TIMEOUT 2000

#define EE_HANDS

And also flashing the EEPROM to hardcode which half is left and which is right. See here for how to flash left and right sides https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-pin https://leico.github.io/TechnicalNote/QMK/write-vitamins-avrdude

hope this helps someone

FoamyGuy commented 3 years ago

Thank you for posting the solution!

I was already defining MASTER_RIGHT, but still having trouble. These two commands you provided worked for me:

#define SPLIT_USB_DETECT
#define SPLIT_USB_TIMEOUT 2000

After adding those each half now distinguished correctly.