1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

macOS 10.13 High Sierra bluetoothaudiod issue

Discussion in 'General Discussion' started by Seungjin Lee, Nov 14, 2017.

  1. Seungjin Lee

    Seungjin Lee Member

    When Across works as a server in macOS 10.13, the bluetoothaudiod of macOS 10.13 has a bug that keeps disconnecting Bluetooth connection with Across Client devices, and the bug had been reported to Apple.

    If you are experiencing this problem, please rename bluetoothaudiod to another name to make it to not run. Normally macOS System Integrity Protection (SIP) prevents you from renaming it, since the binary file is in a system directory. [Not Recommended. Instead, use the below updated workaround] If you want to rename it, please follow the below steps:
    1. Reboot your Mac and press "Command+R"-key during booting to enter Recovery Mode.
    2. Click "Utilities" from menubar and then "Terminal".
    3. In Terminal, type the following commands, where HIGH-SIERRA-VOLUME can be found by ls /Volumes (it should not be "OS X Base System" which is for the Recovery Mode.):
      cd /Volumes/HIGH-SIERRA-VOLUME/usr/sbin
      mv bluetoothaudiod bluetoothaudiodx
    4. Reboot your Mac and start it normally.

    UPDATE: The above method doesn't allow audio devices to work at all. Instead, please change a line of /System/Libray/LaunchDaemons/com.bluetoothaudiod.plist using the below preferred workaround. The preferred workaround allows audio devices to work properly.

    If you have already renamed bluetoothaudio filename, repeat the above steps and replace
    mv bluetoothaudiod bluetoothaudiox
    with
    mv bluetoothaudiodx bluetoothaudiod

    The preferred workaround steps are
    1. Reboot your Mac and press "Command+R"-key during booting to enter Recovery Mode.
    2. Click "Utilities" from menubar and then "Terminal".
    3. In Terminal, type the following commands, where HIGH-SIERRA-VOLUME can be found by ls /Volumes (it should not be "OS X Base System" which is for the Recovery Mode.):
      cd /Volumes/HIGH-SIERRA-VOLUME/System/Library/LaunchDaemons
    4. Replace com.apple.rfcomm.incoming with com.apple.sco.incoming from the com.apple.bluetoothaudiod.plist file.
      Code:
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
          <key>Label</key>
          <string>com.apple.bluetoothaudiod</string>
          <key>POSIXSpawnType</key>
          <string>Interactive</string>
          <key>ProcessType</key>
          <string>Interactive</string>
          <key>LegacyTimers</key>
          <true/>
          <key>LaunchEvents</key>
          <dict>
              <key>com.apple.iokit.matching</key>
              <dict>
                  <key>com.apple.rfcomm.incoming</key> <==================================
                  <dict>
                      <key>IOMatchLaunchStream</key>
                      <true/>
                      <key>IOProviderClass</key>
                      <string>IOBluetoothRFCOMMChannel</string>
                  </dict>
                  <key>com.apple.a2dp.incoming</key>
                  <dict>
                      <key>IOMatchLaunchStream</key>
                      <true/>
                      <key>IOProviderClass</key>
                      <string>IOBluetoothL2CAPChannel</string>
                      <key>IOPropertyMatch</key>
                      <dict>
                          <key>PSM</key>
                          <integer>25</integer>
                          <key>IsInitiator</key>
                          <false/>
                      </dict>
                  </dict>
                  <key>com.apple.bluetooth.outgoing</key>
                  <dict>
                      <key>IOProviderClass</key>
                      <string>IOService</string>
                      <key>IOMatchLaunchStream</key>
                      <true/>
                      <key>IOPropertyMatch</key>
                      <dict>
                          <key>AgentPath</key>
                          <string>com.apple.bluetoothaudiod</string>
                          <key>StartAgent</key>
                          <true/>
                      </dict>
                  </dict>
                  <key>com.apple.avrcp.incoming</key>
                  <dict>
                      <key>IOMatchLaunchStream</key>
                      <true/>
                      <key>IOProviderClass</key>
                      <string>IOBluetoothL2CAPChannel</string>
                      <key>IOPropertyMatch</key>
                      <dict>
                          <key>PSM</key>
                          <integer>23</integer>
                          <key>IsInitiator</key>
                          <false/>
                      </dict>
                  </dict>
              </dict>
          </dict>
          <key>MachServices</key>
          <dict>
              <key>com.apple.bluetoothaudiod</key>
              <true/>
          </dict>
          <key>ProgramArguments</key>
          <array>
              <string>/usr/sbin/bluetoothaudiod</string>
          </array>
          <key>ThrottleInterval</key>
          <integer>1</integer>
      </dict>
      </plist>
      You can replace the line with the following commands:
      1. Type "vi com.apple.bluetoothaudiod.plist" in Terminal.
      2. In editing mode, type ":1,$s/rfcomm.incoming/sco.incoming/g" and then ":wq".
      3. Check whether the line change correctly by typing "cat com.apple.bluetoothaudiod.plist" in Terminal and checking the line.
    5. Reboot your Mac and start it normally.

    This change will be restored to the macOS default after each system update, and repeat the workaround after each system update.
    If you have any other problems, please feel free to let us know.
    Thank you.
     
  2. Amadeus

    Amadeus Member

    So, macOS just came out with an update for 10.13.4, and I do believe this issue may finally be fixed. I've been doing the rename fix for a while, but found after every update, macOS would replace the file again. After this update I haven't experienced the disconnection issue, and I have not done the file rename.

    I double checked and the file had been replaced after the update, so here's hoping!
     
  3. Seungjin Lee

    Seungjin Lee Member

    Hello Amadeus,

    Great, so glad to hear that!

    Please check /System/Library/LaunchDaemons/com.apple.bluetoothaudiod.plist, and if <key>com.apple.rfcomm.incoming</key> line would be replaced with <key>com.apple.sco.incoming</key>, Apple had patched my bug report to macOS 10.13.4. After updated to the version, I found that the line is changed but was not sure whether it'd be fixed by the update or it keep my change before the update.
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.apple.bluetoothaudiod</string>
        <key>POSIXSpawnType</key>
        <string>Interactive</string>
        <key>ProcessType</key>
        <string>Interactive</string>
        <key>LegacyTimers</key>
        <true/>
        <key>LaunchEvents</key>
        <dict>
            <key>com.apple.iokit.matching</key>
            <dict>
                <key>com.apple.rfcomm.incoming</key> <==================================
                <dict>
                    <key>IOMatchLaunchStream</key>
                    <true/>
                    <key>IOProviderClass</key>
                    <string>IOBluetoothRFCOMMChannel</string>
                </dict>
                <key>com.apple.a2dp.incoming</key>
                <dict>
                    <key>IOMatchLaunchStream</key>
                    <true/>
                    <key>IOProviderClass</key>
                    <string>IOBluetoothL2CAPChannel</string>
                    <key>IOPropertyMatch</key>
                    <dict>
                        <key>PSM</key>
                        <integer>25</integer>
                        <key>IsInitiator</key>
                        <false/>
                    </dict>
                </dict>
                <key>com.apple.bluetooth.outgoing</key>
                <dict>
                    <key>IOProviderClass</key>
                    <string>IOService</string>
                    <key>IOMatchLaunchStream</key>
                    <true/>
                    <key>IOPropertyMatch</key>
                    <dict>
                        <key>AgentPath</key>
                        <string>com.apple.bluetoothaudiod</string>
                        <key>StartAgent</key>
                        <true/>
                    </dict>
                </dict>
                <key>com.apple.avrcp.incoming</key>
                <dict>
                    <key>IOMatchLaunchStream</key>
                    <true/>
                    <key>IOProviderClass</key>
                    <string>IOBluetoothL2CAPChannel</string>
                    <key>IOPropertyMatch</key>
                    <dict>
                        <key>PSM</key>
                        <integer>23</integer>
                        <key>IsInitiator</key>
                        <false/>
                    </dict>
                </dict>
            </dict>
        </dict>
        <key>MachServices</key>
        <dict>
            <key>com.apple.bluetoothaudiod</key>
            <true/>
        </dict>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/sbin/bluetoothaudiod</string>
        </array>
        <key>ThrottleInterval</key>
        <integer>1</integer>
    </dict>
    </plist>
    
    For your reference, major updates of Across will be available within some days and the new version will fix the window flickering issue at the returning switch moment and did my best to minimize keyboard/mouse inputs delay, and fixed and optimized tons of other issues.

    Thank you so much for your report! ;)
     
    Last edited: Apr 2, 2018
  4. Amadeus

    Amadeus Member

    Not quite sure I follow?

    I did open up /System/Library/LaunchDaemons/com.apple.bluetoothaudiod.plist

    I did fine this line: <key>com.apple.rfcomm.incoming</key>
    and did NOT find this line anywhere in the file: <key>com.apple.sco.incoming</key>

    One small additional issue I have found, that is hopefully an easy fix. I have Across Server setup on my Mac, and the Client setup on my PC. In my mac keyboard settings, I do the following:

    [​IMG]

    I map Caps Lock as another Ctrl key. It works great on my mac, but on the PC, Caps Lock is not usable as Ctrl. Would be nice if Across has a way to inherit these settings.
     
  5. Seungjin Lee

    Seungjin Lee Member

    OK, thanks for the confirmation. When you will experience the disconnecting issue, please replace the <key>com.apple.rfcomm.incoming</key> line with <key>com.apple.sco.incoming</key> like in the previous macOS versions.

    I need max one day to apply the feature, and will do my best to apply the feature to the coming update.
     
  6. Seungjin Lee

    Seungjin Lee Member

    Hey Amadeus, the new versions (v1.40 & v2.beta3) are available. Please try the new version. :)

    PS: The bluetoothaudiod issue still remains in 10.13.4. I recommend to patch it using the above revamped workaround.
     
    Last edited: Apr 6, 2018
  7. Seungjin Lee

    Seungjin Lee Member

    Good news, Apple would have fixed this issue. Here is their feedback:
     
  8. Amadeus

    Amadeus Member

  9. Clovis559

    Clovis559 New Member

    I have Mojave intstalled and across center 2.00beta3. I can move the mouse to mojave, but not back.
     

Share This Page