2

I recently noticed that macOS has an icon for every W1 enabled audio device in the Bluetooth preferences, but I'm not exactly sure where the system gets these icons.

In the screenshot below, the Beats Solo³ and AirPods were paired to my iPhone, and iCloud paired them to my Mac. It looks like the color of the Beats headphones in the icon do match the color of the real headphones as well!

I assume that either macOS has the images for every W1 stored somewhere or the system had to contact Apple to get these images. Just in case, I did check the following directory:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources

enter image description here

  • 1
    Why does the Bluetooth chip matter here? We don't track tags for A7, A8, A9... chips in the iPhone. – Allan Feb 28 '18 at 13:48
  • 1
    @Allan The reason I mention the W1 is that looking at the screenshot above, only W1 devices paired via iCloud have accurate icons. Notice the regular bluetooth speaker has a generic speaker icon. – Jake3231 Feb 28 '18 at 13:49
  • 1
    I think it's nothing more than a coincidence that all your current devices are M1. For instance, my Apple BT keyboard is not M1 and they have the icon for it. Could it be that Apple has icons for Apple devices? – Allan Feb 28 '18 at 13:56
  • 1
    Maybe it is more accurate to say that Apple devices have specific icons. I guess what I’m saying that only among audio devices, those containing an Apple W1 chip are the only ones with accurate icons. – Jake3231 Feb 28 '18 at 13:57
6

I was able to find where icons are stored for W1 devices. It appears that this folder already contains assets for every W1 device that exists. You can find icons for W1 devices here:

/System/Library/Frameworks/IOBluetoothUI.framework/Versions/A/Resources

If you're using Swift on macOS, you can use the following code to programmatically get a device image:

IOBluetoothDevice.init(addressString: "bluetoothDeviceAddress").value(forKey: "image")

or

   for device in IOBluetoothDevice.pairedDevices() {
    let deviceName = ((device as! IOBluetoothDevice).name)
    let deviceImage = (device as! IOBluetoothDevice).value(forKey: "image")
}
  • seems like it's not working on High Sierra. Is there any other way? – Sega-Zero Jul 2 '18 at 8:04
  • @Sega-Zero are you referring to the code or the directory? – Jake3231 Jan 8 at 3:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .