Issues Connecting Model 01 to Chrysalis and Configuring FN Key with Karabiner

Hi,

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).

Unfortunately, I am unable to use Chrysalis.

When I try to “Connect” my keyboard using Chrome or Brave at https://chrysalis.keyboard.io/, the following happens:


It says that no compatible devices were found.

As a consequence, I can’t access “My keyboard”:

Model: Model 01-Q.

Also, apparently, the software cannot read the firmware version:

Not sure if the two problems are connected, but I am a heavy user of a software called Karabiner Elements.

I also tried to customize this Keyboardio through Karabiner. I was especially interested in configuring the fn key.

However, I noticed the “key event logger” is not recognizing the “fn” key from Keyboardio, although other keys are being logged:

I am using macOS 15.1 (24B83) (Apple M1).

Am I missing something? How can fix these issues?

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.

1 Like

Thanks for trying to help, @squizzler.

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:

{"logs": ["[2024-11-20T02:45:43.775Z] [DEBUG] [c.resetDeviceState (https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:205:352165)]: Resetting device state", {"message": "[2024-11-20T02:45:43.868Z] [DEBUG] [a.navigate (https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:214:15194)]: navigating to location", "data": {"args": ["/keyboard-select"]}}, "[2024-11-20T02:45:43.898Z] [LOG] [Sn (https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:214:499758)]: [object Object]", "[2024-11-20T02:45:43.898Z] [LOG] [Sn (https://chrysalis.keyboard.io/js/main.df320e2f48ad406ad30e.bundle.js:214:499758)]: null"]}

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.

1 Like

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
1 Like

@jesse,

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.

Here is the output from my terminal:

➜  ~ ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port
/dev/tty.debug-console
/dev/tty.usbmodemCkbio01E1
/dev/tty.wlan-debug
➜  ~ lsof /dev/tty.usbmodemCkbio01E1

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:

Connecting did not work though:

screen /dev/tty.usbmodemCkbio01E1 9600
[screen is terminating]

It retrieves “could not find a PTY.”

Is there something else I can do to help debug the problem?

Hm.

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?

Not sure if I followed the instructions right.

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.

Thanks for the support, @jesse. Any suggestion as a follow up?

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

Hey @jesse,

Thanks for the continuous support here.

I can see the keyboard in Chrysalis’ UI. Thus, it shows up and the process seems to start.

However, the process of updating the firmware while selecting factory reset does not work. It retrives a message about “error flashing the firmware”.

I actually don’t care about missing the previous configuration. I just wanna make it work with Chrysalis.

A brief video to make sure I am not missing something trivial in the process: https://youtube.com/shorts/stCceq1ginI

Another suggestion?

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?

@jesse I thought I’ll give the factory reset a try too. I have the same problem as @pdelfino above. Here’s my console output:

I’ve never used anything but Chrysalis.

I suspect that @pdelfino and @pheuberger are experiencing two different issues.

@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.

Best,
Jesse

@jesse, I should have mentioned it before.

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)

1 Like

@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 :ok_hand:

And I think I just fixed the bug in Chrysalis that was making it not show you that configuration information when it failed.

@pdelfino I made some other changes that may fix your connection issues. I’d love to know how they go for you

1 Like

Hey @jesse, it worked :smiley: I can connect the device to the Chrysalis now.

Now, I need to read the manual/docs and learn how to launch apps using keyboardio. I wish there were some tutorials as videos since it is GUI.

Thank you!

Thanks again for the support! :pray: