Ok, so I got antsy about waiting for yet-another-replacement DVD from Apple, and decided I’d try to upgrade my system with the last Snow Leopard developer build I could find. It seems to have been a mistake, because I can’t upgrade my way out of the developer build to a current version- but I can redo my install once the replacement DVD arrives, so it’s not that bad- however during the shuffle, I downgraded iTunes by using the old version on the install disk- not too big a deal, manual re-install instructions are on Apple’s site. However once i did that, my iPhone would no longer sync. iTunes didn’t see the phone, and worse yet, I wasn’t even getting power when it was plugged in- So I tried a different USB port, still not recognized- so it was time to dig through the logs- here’s what I found
com.apple.launchd[1] (com.apple.usbmuxd[316]: getpwnam(“_usbmuxd”) failed
That doesn’t look good…
I tried a few Googles, and since I wasn’t getting the group error, nothing worked. I tried installing each pkg file from the new iTunes manually, and that didn’t work either.
The postupgrade file said:
# Postflight actions for _usbmuxd role account, not necesary for Snowleopard
I knew then I was in the right place. “id _usbmuxd” produced a “no such user” error. Now all I needed was to add the user the way the postupgrade script wanted to- here’s what the script had:
# Create User _usbmuxd
$CMD -create $CMDUSERS/_usbmuxd
$CMD -create $CMDUSERS/_usbmuxd generateduid \
FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000D5
$CMD -create $CMDUSERS/_usbmuxd gid 213
$CMD -create $CMDUSERS/_usbmuxd home /var/db/lockdown
$CMD -create $CMDUSERS/_usbmuxd name _usbmuxd
$CMD -create $CMDUSERS/_usbmuxd passwd '\*'
$CMD -create $CMDUSERS/_usbmuxd realname 'iPhone OS Device Helper'
$CMD -create $CMDUSERS/_usbmuxd shell /usr/bin/false
$CMD -create $CMDUSERS/_usbmuxd uid 213
umask 0000
mkdir -p "$3/var/db/lockdown"
chown 213:213 "$3/var/db/lockdown"
I already had /Volumes/Macintosh HD/var/db/lockdown, so I didn’t need the last bit- I put the first part in a script- adding
#!/bin/sh
CMD='eval dscl -f "'$3'/var/db/dslocal/nodes/Default" localonly'
CMDUSERS="/Local/Target/Users"
To the top of the file. No joy. Apple has changed the parameters to dscl.
More searching and finally I got the syntax and instead of scripting it, I just added the commands one at a time in a root shell.
First getting a root shell without root enabled on OSX is as easy as typing “sudo /bin/sh” in a terminal window. After being prompted for your password, the prompt will change from a $ to a # and you’re ready to proceed.
Here are the commands that need to be entered to re-create the _usbmuxd user- since the lines are long enough to wrap, I’ll make each one a bullet point:
dscl localhost -create /Local/Default/Users/_usbmuxd
dscl localhost -create /Local/Default/Users/_usbmuxd generateduid FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000D5
dscl localhost -create /Local/Default/Users/_usbmuxd gid 213sh-3.2# dscl localhost -create /Local/Default/Users/_usbmuxd home /var/db/lockdown
dscl localhost -create /Local/Default/Users/_usbmuxd name _usbmuxdsh-3.2# dscl localhost -create /Local/Default/Users/_usbmuxd passwd ‘\*’
dscl localhost -create /Local/Default/Users/_usbmuxd realname ‘iPhone OS Device Helper’
dscl localhost -create /Local/Default/Users/_usbmuxd shell /usr/bin/false
dscl localhost -create /Local/Default/Users/_usbmuxd uid 213
After a reboot and login, iTunes started and my iPhone was synchronizing.