Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diverge 3 does not work at all during Mac boot #37

Closed
raquo opened this issue Jun 21, 2019 · 6 comments
Closed

Diverge 3 does not work at all during Mac boot #37

raquo opened this issue Jun 21, 2019 · 6 comments

Comments

@raquo
Copy link

raquo commented Jun 21, 2019

Tested on:

  • Late-2018 Mac Mini (macOS 10.14.5)
  • Early-2015 Macbook Pro (macOS 10.13.6)
  • Mid-2012 Macbook Pro (macOS 10.14.4)

On all Mac computers that I tried (and on all of their USB ports, with or without USB hubs), my Diverge 3 keyboard does not work at all during the boot process. This means that when booting up the computer you can't hold down the "option" (alt) key to choose which drive to boot from, or hold cmd+R to enter recovery mode, or use any other startup commands. All keyboard input is completely ignored at this stage.

It also means that if you have Filevault (Apple's full disk encryption) enabled, you can't enter your password in any way when turning the computer on (after it being powered off), as typing on the keyboard has no effect on that login screen.

On the other hand, if FileVault is disabled, OR if you are waking up the computer from sleep, you can log in just fine because in those cases the login window is shown to you by MacOS, not by Apple's boot stage software, and in MacOS the Diverge keyboard works just fine.

I have tested an external Apple keyboard, and that works fine during boot. I have read user reports online that some other third party keyboards work too, e.g. the AmazonBasics USB keyboard, as well as reports that some other brands don't work.

I have talked with Apple, but they kept angrily insisting that the problem is with the keyboard, although they of course couldn't tell me what the actual problem was, or why they were so sure of it.

Given that some third party keyboards do work during Mac boot, this could potentially be a hardware or firmware issue with Diverge, thus this ticket.

If anyone else is using Diverge with Macs, please chime in whether you're facing this issue or not. I suspect that this is not an easy bug to hunt down, so it would be good to know that I'm not the only one with this problem.

@raquo
Copy link
Author

raquo commented Jun 21, 2019

From what I could piece together with some further research:

Since you are using NicoHood/HID project in Animus, maybe this last issue above would be relevant to finding the fix?

@blahlicus
Copy link
Owner

Hey, which version of animus are you running? Animus 2.7 or above has an NKRO toggle, if you set it to 6KRO instead of NKRO then it should work in BIOS for all OSs including macOS. animus 2.7 does use NicoHood so the BootKeyboard fix in NicoHood is also in animus 2.7.

Does pressing the "set to 6KRO" key then unplugging and replugging your Diverge 3 allow you to use it during boot? If so, then you have the version of animus with that capability, if not, then please wait for a few days whilst I fix the versioning on animus before updating your firmware since it is currently a bit of a mess right now.

@raquo
Copy link
Author

raquo commented Jun 24, 2019

@blahlicus The Animus 2.7 firmware found in github releases (keyboard.specific.source.builds.zip / diverge-3) is missing some required files (e.g. HID-Project.h). Is there a different place I should be downloading it from?

I was using the firmware version linked from https://unikeyboard.io/animus/ and from https://unikeyboard.io/product/diverge-3/ which apparently is an old one, 2.3.1. So I hope that 2.7 will fix the issue, but I can't compile it due to missing files...

@blahlicus
Copy link
Owner

It is a fork of the NicoHood/HID library included in here. You'll have to place the library in the libraries folder in your arduino IDE for it to work.

@raquo
Copy link
Author

raquo commented Jun 28, 2019

Thanks for clarification, I have now installed the 2.7 firmware like you said, and it is mostly working.

I can now enter my password when booting up my computers into Filevault login screen.

I added the "Set 6KRO" and "Win NKRO" (not "Unix NKRO", that one behaved like 6KRO) keys to my layout, and they work as expected, confirmed on xem.us.

I have also confirmed that it was NKRO that was preventing password input during boot stage. I toggled between 6kro and nkro on the login screen, and saw that only 6kro worked. So I set the keyboard to 6kro, and it remembers this setting, so all's good.

The only remaining problem are Mac boot commands, for example "Hold the option key during boot to choose the drive to boot from". Using built-in laptop keyboard or Apple bluetooth keyboards I can just turn on the computer and start holding the option key immediately, and it's guaranteed to work. With my Diverge, I have to start holding it at the exact second when the apple logo appears. If I start holding it half a second earlier or later, it won't work. Now that I figured it out I can live with it, but it's not how other keyboards behave.

So, unless the timing issue sounds like it could be a problem, let's close this issue I guess. If you want I can get my hands on a couple other non-Apple keyboards next week and see how they behave. Thanks for your help!

@blahlicus
Copy link
Owner

Hey, I'm glad you were able to get it to work, I've tested the forked NicoHood code extensively (my daily drive Diverge 2 runs a firmware with that installed) so I know it works, but it is quite involved and messy to install an Arduino library manually which is why I recommended that you wait for a firmware update which does not depend on a forked version of a third party library, but I'm glad you were able to figure it out.

Thanks for letting me know about the weird issue during boot even with BootKeyboard, I don't have a proper mac machine (I have a hackintosh I use for debugging but that's it) that I could test boot related issues will, it would be great if you could test out some third party keyboards and their behaviour during boot for me, but no sweat if you are unable to do so.

I'll close this issue for now, if you ever got around testing the third party keyboards, please reopen this issue or open a new issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants