I have a Model 01 that a friend gave to me. It has been working well for normal typing.
However, I would like to use the Chrysalis software to trigger some automation (like launching applications) and set up some customizations (make it more Emacs friendly outside of Emacs).
I’m don’t use Chrysalis or Carabiner, but I suspect you should pick one or the other. Presumably Chrysalis is better because you can plug your keyboard into any computer and use it without installing software to each machine.
As for your problem, what sort of customisations are already in the keyboard when it was given you? Perhaps try to clear the eeprom and reinstall the current default firmware (use Arduino IDE)?
As for Mac Fn key, I don’t think iirc it can be replicated because it is Apple being Apple and it does something that keyboard firmware cannot replicate.
I’d like to point out that I reproduced everything I mentioned after completely disabling the Karabiner software on my machine. I also reconnected the USB-C cable to ensure a fresh start/reboot.
However, the exact same issues I reported earlier still persist.
If I can add something it is the “report problem” log provided by Chrysalis:
I think that what you’re seeing with Chrysalis is the result of a new fallback we added for the Model 100 in bootloader mode.
But what we’re seeing is the Model 01 being unable to connect to Chrysalis over serial. That implies something else is opening up the Model 01’s serial port and holding it open.
Separately, you won’t be able to see the ‘Fn’ key from Karabiner Elements. Layer keys don’t generate USB key events since the USB HID keyboard standard doesn’t have any way to do something like layers.
I’m seeing something similar on my Model 100 connected over USB to my Ubuntu machine (Framework 13").
Here’s the console log:
[2024-11-22T11:00:05.263Z] [ERROR] [https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:214:171361]: Failed to open serial port NetworkError: Failed to execute 'open' on 'SerialPort': Failed to open serial port.
main.df320e2f48ad406ad30e.bundle.js:214 [2024-11-22T11:00:05.264Z] [ERROR] [push.60290.a.connectToDfuUsbPort (https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:214:169812)]: Failed to open usb port SecurityError: Failed to execute 'requestDevice' on 'USB': Must be handling a user gesture to show a permission request.
at push.60290.a.connectToDfuUsbPort (main.df320e2f48ad406ad30e.bundle.js:214:169545)
at connectKeyboard (main.df320e2f48ad406ad30e.bundle.js:214:116485)
main.df320e2f48ad406ad30e.bundle.js:214 [2024-11-22T11:00:05.266Z] [LOG] [Sn (https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:214:499758)]: [object Object]
main.df320e2f48ad406ad30e.bundle.js:214 [2024-11-22T11:00:05.266Z] [LOG] [Sn (https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:214:499758)]: null
I’m not sure if I’m missing something, but since no processes are listed when I run lsof /dev/tty.usbmodemXXXX, it appears that no other application is currently using the serial port. This suggests that the issue might lie elsewhere.
I really want to solve this and use Chrysalis. Since Karabiner is less powerful than Chrysalis (I can’t leverage the fn key in Karabiner), I need Chrysalis fully working to incorporate Keyboardio completely into my workflow.
This is what my Applications > Utilities > System Information shows on USB:
Download the classic (1.8) arduino IDE.
Open it up and select /dev/tty.usbmodemCkbio01E1 under the serial port menu.
Click the serial port icon in the top right of the sketch menu.
That should pop open the Arduino serial console.
Type help and hit return.
Do you get output?
I am using Arduino 1.8.0 (even though there is a newer version).
But, here is a print summarizing. After typing help and hitting return (using keyboardio to type and to hit the return) nothing appeared. There was no response.
at this point, I would probably recommend putting your keyboard into factory reset mode by holding in the prog key while connecting it to your computer and flashing a new firmware from Chrysalis making sure to select factory reset mode. if the keyboard doesn’t show up in chrysalis when it is in bootloader mode, we have a different set of problems
I am using a cheap USB-c cable. Good enough to make keyboardio work for basic typing. Only Chrysalis’ stuff is failing. That said, is there a possibility that the cable is actually the problem?
@pdelfino Is there a chance that you have a second mac nearby to try with? I want to try to narrow this down to a computer config issue or a keyboard/chrysalis issue. The cable shouldn’t be the issue. If you can type or even see the keyboard in bootloader mode, Chrysalis should work. As a note, once the LED turns red, you can let go of the Prog key.
@pheuberger - This looks like a permissions issue. Can you show us the content of your /etc/udev/rules.d/50-kaleidoscope.rules file? (This is a linux-only thing related to how linux does device permissions)
@pheuberger I just pushed a new update to Chrysalis that may resolve your issue. It changes the connection flow for the Model 100 in factory reset mode.
But I actually tried that with my wife’s MacBook Air. She is pretty vanilla—her Mac does not have weird stuff like Karabiner or “Emacs Anywhere” or “Homerow for link hints” like I do.
I did not try the factory reset recipe on her device. My attempt with her device was before you gave that recipe (Saturday).
Unfortunately, the same things that I observed initially—being able to type but not being able to use Chrysalis fully—did not work on her device. Later today I can try the factory reset recipe on her Mac and check if the behavior is any different.
Also, I find Chrysalis could have a more extensive bug report pulling out all the config definitions from the desktop environment that could impact the application. It would help in debugging situations like this.
https://nyxt.atlas.engineer/ has a nice bug report feature. Only works for Linux kernel distributions, though. And they are very much privacy-oriented.
@pdelfino - Understood. The thing to try on her mac is that Arduino recipe. If that doesn’t work, I’ll build you a custom firmware that should entirely wipe your device and then we can see if the firmware behaves better. That more extensive bug report feature is the ‘Create a bundle’ feature under this menu item:
When it ran as a local app, there was a lot more low-level data we could gather there. The browser environment is definitely more protective of user data. (Also, most of what we’re trying to gather is usually post-connect. Initial connection issues are trickier to log usefully)
@jesse Thank you for mentioning the udev rules file. I didn’t have it on my machine so I did some searching and stumbled across this issue that helped me fix the problem. I can now normally connect the keyboard to Chrysalis