Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Mac OS X Finder is smug enough to display any non-Mac device as a picture of a PC with a BSOD, but I'm wondering if it's possible to add other devices, so my Ubuntu machine is detected and has a picture of a Ubuntu PC, and my Windows PCs has a picture of Windows crashing, etc.

I know that public.generic-pc.icns exists and can be replaced but I'm not interested in replacing it per se, more interested in getting finder to recognise other devices (or learn how it recognises other Apple devices) and map custom icons to them.

Any clue?

share|improve this question
There needs to be a way to distinguish between the machines, and I don't think samba will purposely behave different from windows to be recognised as such... – Daniel Beck Dec 5 '11 at 7:03
According to this, you can advertise a server as an Xserve or other device. Looking in CoreType.bundle, I can see that there is a mapping of these names (for example Xserve or RackMac is mapped to (.icns) by using the Equivalent Types. Extending from this, I'd assume that creating a custom one would be adding another entry, but I can't get it to work. – Adam M-W Dec 12 '11 at 8:21
I'd argue this belongs to SO because I don't believe there's any tweak that would allow that without any heavy programming. But then again, I'm just guessing here in hope to shed a light. :P – cregox Jan 10 '12 at 12:27
up vote 7 down vote accepted

Seems that I was very close, I just wasn't getting my machine to advertise itself properly.

I finally got it to work:

Custom Network Device Image in Mac OS X

The method I used is below:

  1. First, on the Mac, I created a custom bundle which I called "ComputerTypes" by copying and pasting an existing bundle such as MobileDevices.bundle or MachineTypes.bundle in the /System/Library/CoreServices/CoreTypes.bundle/Contents/Library folder.

  2. I then opened Contents/Info.plist with XCode Plist Editor and edited all the details to create a custom bundle, changing the Bundle Identifier, Name, etc.

  3. I removed all the existing entries in the "UTExportedTypeDeclarations" key then created a new entry per device. Each device entry has a "UTTypeConformsTo", "UTTypeDescription", "UTTypeIconFile", "UTTypeIdentifier" and "UTTagSpecification", where the "UTTagSpecification" dictorinary contains an Array in the key "" with all of the mDNS _device-info._tcp identifiers to accept. UTTypeIconFile refers to a icns file in the Resources folder.

  4. I then saved the bundle to /System/Library/CoreServices/CoreTypes.bundle/Contents/Library folder and rebooted.

  5. On the other machine, I needed to set up to advertise a _smb._tcp service as well as the _device-info._tcp TXT record, as usual except using a custom model name rather than a Mac product name.

  6. After rebooting the Mac, it should appear like the picture above.

I uploaded the finished bundle to as an example.

share|improve this answer
Very nice. How'd you accomplish step 5? Samba configuration? – Daniel Beck Mar 10 '12 at 8:54
Step 5 is just about setting avahi-daemon to advertise a _smb._tcp service and a _device-info._tcp txt record. The howto linked above if you scroll down to step 5 should help, except change _afpovertcp to _smb and change to port 445, and change the model to your custom value. – Adam M-W Mar 11 '12 at 0:47
This is pretty cool, thanks. – Daniel Beck Mar 11 '12 at 10:27
Has anyone gotten this to work on a windows machine? Is there even a Bonjour implementation on Windows that can do the advertisement? – John O Jan 21 '13 at 8:16

This is probably only worthy of being a comment to Adam's answer, but I need formatting.

In Windows, assuming iTunes or Bonjour for Windows is installed, you can advertise a samba share with the following:

  1. Open two cmd prompts.
  2. Run the following commands (in different consoles):

    dns-sd -R ComputerName _device-info._tcp local 445 model=Xserve3,1

    dns-sd -R ComputerName _smb._tcp local 445

Dns-sd won't exit, and if you Ctrl-C or close cmd, the share will disappear from Finder. I can only manage to use the default OSX icons, despite Adam's helpful sample file (it might be a 10.6 vs. 10.8 issue... there are plist differences between his and 10.8's). Also, I'm having a heck of a time figuring out how to get windows to run this command and shut it down at poweron/poweroff and wake/sleep (though, to shut down dns-sd from a bat script you'd just use taskkill).

share|improve this answer
could you just run the batch as a service? – Alex Gittemeier Mar 21 '13 at 0:53

You must log in to answer this question.

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