Bluetooth keyboard not always detected

2013-10-12
2013-11-01
  • Albrecht Dreß
    Albrecht Dreß
    2013-10-12

    I installed rEFInd on my iMac13,1 to get a dual-boot system with Mac OS X 10.8 and Ubuntu 13.04. Basically, it works fine, but I have an issue with the Apple bluetooth keyboard.

    When the last OS running was Mac OS X, the keyboard is always functional in rEFInd after a few seconds, so I can select the OS to boot. It doesn't make a difference whether I did a "soft" reboot from OS X, or a complete power-off/power-on sequence.

    However, when the last OS running was Linux, the keyboard is not detected by rEFInd. Thus, after the time-out the box always boots into OS X, and I have to re-boot to reach Linux.

    Apart from that, the keyboard works fine with Linux (and OS X, of course).

    Any idea what causes this issue, and how I could fix it?

    Thanks in advance,
    Albrecht.

     
  • My guess is that this has something to do with the way the drivers for OS X and Linux de-initialize the keyboard. Presumably Linux is doing a more thorough job of de-initializing the keyboard that in OS X, and if the firmware isn't fully re-initializing the hardware, rEFInd won't be able to detect it. Unfortunately, this speculation (even if it's correct) doesn't lead to an obvious workaround. An EFI driver for your bluetooth keyboard should be able to fix the problem, but I don't know of such a driver, so that doesn't really help unless you care to develop such a thing.

    I suppose there's a slim chance that another boot manager, such as GRUB or gummiboot, might access the firmware in some way other than what rEFInd does, and this might trigger the keyboard to work. Thus, you could try them. If one of them works better, I'd like to hear about it, since this might enable me to fix rEFInd.

     
    • Albrecht Dreß
      Albrecht Dreß
      2013-11-01

      Thanks for your reply...

      I made a very brutal test to check whether the Linux de-initialisation is to blame:

      1. log off from X
      2. go to a text console, and log on as root
      3. type 'sync' several times and
      4. cut the power.

      When I re-power the box, I see the usual "Linux" behavior, i.e. the keyboard is not recognised. Thus, as Linux didn't have a chance to de-initialise the hardware, I don't think it will be possible to fix the issue in the Linux driver...

      Or did I miss something here?

       
  • So a straight power-down from OS X acts like a shutdown from Linux, in terms of the keyboard behavior? If so, you might try contacting whoever wrote the Linux bluetooth drivers for help; in principle, changing those drivers to do whatever the OS X drivers do might fix the problem. It's also conceivable that an EFI driver could fix the problem. Unfortunately, as I don't have the hardware in question, I have no way to test or contribute code to any such fix.