Archive for the 'Amarok' Category

Sync the iPhone 3x in Amarok on Gentoo Linux

This was partially error on my part, and lack of documentation else where. The iPhone 3x (jailbroken or not) can finally sync with Amarok. A few packages are needed, but the process is automated. You no longer need to use ifuse to manually mount and use gtkpod to transfer music. However, I have not found a way to tranfer pictures or video yet, so I don’t recommend completely removing them. The following packages are needed to complete this, and a few things are needed before you install Amarok.

Prerequisite Packages Needed with the Proper USE Flags:

=dev-libs/libusb-0.1.12-r7 debug doc
=dev-libs/libusb-1.0.3 debug doc
=app-pda/libplist-9999
=app-pda/libiphone-9999
=app-pda/ifuse-9999
=app-pda/usbmuxd-9999

After these are installed, you need to remove both media-sound/amarok and media-sound/amarok-utils. Once these are removed, you need to reinstall both of the newest packages with the following USE flags.

Before the installation, you need to remove the Amarok folders in your home directory. You will have to reconfigure your music collection’s location, but this will clear all of the problems that might stop your phone from mounting in Amarok. (I removed all the folders vice each file inside)

Locations of Amarok Configurations:

~/.kde4/share/apps/amarok/
~/.kde4/share/config/amarok

…and here are the new Amarok packages you need.

Amarok and Amarok Utilities with Proper USE Flags:

=media-sound/amarok-2.2.2.90 daap embedded ipod lastfm mp3tunes opengl
=media-sound/amarok-utilites-2.2.2.90 -debug

Once you have done all of this, plug your phone in, and it should mount in Amarok automatically.

Screenshot:

iPhone 3G(s) 3.1.2 Sync’ed in Gentoo

Yep, that’s right.  Sync’ed, finally.  It took a little work, and thanks to Marcan and his team of helpers, this can finally be done. The following guide is for gentoo users, but can be tailored to work for any linux OS. I successfully got Rhythmbox and Amarok to play all of the music from my iPhone.

Step 1: First, you need add the Rion overlay from layman.

# emerge -va layman
# layman -a rion
# layman -S
# echo `PORTDIR_OVERLAY="/usr/local/portage/layman/rion"` >> /etc/make.conf
# env-update
# eix-update

(if you have a PORTDIR_OVERLAY line already, then just add it manually with your favorite editor)

Step 2: You will need to emerge a couple of packages, if you have them installed, it is best to remove them first, then emerge the new ones.

# emerge -C libusb usbmuxd libplist libiphone ifuse

You will need the following packages in order for this to work right. Note that the version DOES matter. If you have older versions, they need to go, but same or later versions are good.

  • 1. dev-libs/libusb-1.0.5
  • virtual/libusb-1
  • 2. app-pda/ifuse-0.9.4
  • 3. app-pda/libplist-0.16
  • 4. app-pda/libiphone-0.9.4
  • 5. app-pda/usbmuxd-1.0.0_rc2

The 9999 packages of any of these really didn’t work for me, so I suggest masking them out.

# echo "=app-pda/libplist-9999" >> /etc/portage/package.mask
# echo "=app-pda/libiphone-9999" >> /etc/portage/package.mask
# echo "=app-pda/ifuse-9999" >> /etc/portage/package.mask
# echo "dev-libs/libusb **" >> /etc/portage/package.keywords
# echo "app-pda/ifuse **" >> /etc/portage/package.keywords
# echo "app-pda/libplist **" >> /etc/portage/package.keywords
# echo "app-pda/libiphone **" >> /etc/portage/package.keywords
# echo "app-pda/usbmuxd **" >> /etc/portage/package.keywords
# emerge -va libusb libiphone ifuse libplist usbmuxd libgpod

Additionally, I would make sure that amarok and/or rhythmbox are built with ipod support (USE=”ipod”). Just add the ‘ipod’ use flag to your USE line in /etc/make.conf.

Now, we have to create the usbmux user so that usbmuxd will work properly. You will have to make sure that this user has access to usb and plugdev. I added wheel too, but it isn’t necessary.

# useradd -G usb,plugdev,wheel -s /bin/bash usbmux

Once everything is emerged successfully, you need to test out and make sure that your iphone is being registered when it connects. First you will have to modify the udev rules so that you can see the output. Increase the syslog debug level by editing “/lib/udev/rules.d/85-usbmuxd.rules” and adding “-v -v” flags to the end of both RUN statements. Now you can run the following and see if usbmuxd is seeing your iphone.

# tail -f /var/log/messages
Dec 12 11:39:27 ghost kernel: [450381.899021] usb 2-4: New USB device found, idVendor=05ac, idProduct=1292
Dec 12 11:39:27 ghost kernel: [450381.899024] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Dec 12 11:39:27 ghost kernel: [450381.899026] usb 2-4: Product: iPhone
Dec 12 11:39:27 ghost kernel: [450381.899028] usb 2-4: Manufacturer: Apple Inc.
Dec 12 11:39:27 ghost kernel: [450381.899030] usb 2-4: SerialNumber: 69a4294a91a56958927f3fafe0086bf90ccd2d2b
Dec 12 11:39:27 ghost kernel: [450381.899134] usb 2-4: usb_probe_device
Dec 12 11:39:27 ghost kernel: [450381.899137] usb 2-4: configuration #1 chosen from 4 choices
Dec 12 11:39:27 ghost kernel: [450381.900385] usb 2-4: adding 2-4:1.0 (config #1, interface 0)
Dec 12 11:39:27 ghost kernel: [450381.900413] usb 2-4:1.0: uevent
Dec 12 11:39:27 ghost kernel: [450381.900485] drivers/usb/core/inode.c: creating file '012'
Dec 12 11:39:27 ghost kernel: [450381.900505] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0010
Dec 12 11:39:27 ghost kernel: [450381.905696] usb 2-4: usb_disable_device nuking non-ep0 URBs
Dec 12 11:39:27 ghost kernel: [450381.905701] usb 2-4: unregistering interface 2-4:1.0
Dec 12 11:39:27 ghost kernel: [450381.905782] usb 2-4:1.0: uevent

If you are seeing your phone come up, then everything was done right. The last thing to do is mount the phone. simply use ifuse, and mount it to a specified mount point.

# ifuse /mnt/to/location

Again, you can now browse the entire filing system, and when you import the music, it should convert so that it isn’t in the hashed/encrypted form. Rhythmbox even got the album art.

I am working on how to copy music to the iphone now, so if anyone got that down, please let me know.

iPhone 3.x Firmware and Amarok ?!?

There might be hope…

http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux/

It seems as if there is a project underway to help us linux users get the best out of our iPhones!

Ipod Touch Sync’ed to Amarok in Gentoo

First, as always, I am not responsible for any damages done to your equipment, if you choose to jailbreak and modify your device, that is on you!!

Now, you will need to obtain a version of the 2.x firmware, and your device will need to be jailbroken. After you have jailbroken the device, you need to install ‘OpenSSH’ and ‘Mobile Terminal’ from Cydia or Installer. These allow the obvious, ssh access and a terminal on the device.

On your linux box, you will need Amarok 1.4.10 or before, sadly, Amarok 2.0 will not work yet. You will also need sshfs and fuse.

# echo "media-sound/amarok ipod" /etc/portage/package.use
# emerge sys-fs/fuse sshfs-fuse =media-sound/amarok-1.4.10-r2

Set a static ip address on the device to match your the network your linux box is on.

Now, ssh into the device, the root password is defaulted to alpine.

$ ssh root@192.168.1.110

Edit the /etc/ssh/ssh_config on the device, and add the following lines:

iTouch# nano /etc/ssh/ssh_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Next, you need to generate a ssh key for passwordless login into the device, and copy it to the device.

$ ssh-keygen
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.110

Now to make sure that your permissions are set right for passwordless login:

iTouch # cd ~
iTouch # cp .ssh/authorized_keys .ssh/authorized_keys2
iTouch # chmod 755 /var/root
iTouch # chmod 700 /var/root/.ssh
iTouch # chmod 644 /var/root/.ssh/authorized_keys
iTouch # reboot

After your device has rebooted, test your connection to make sure that you can log into your device without a password.

$ ssh root@192.168.1.110

If all is well, mount the device to your desired directory, or you can use ipod-touch-mount or iphone-mount in Ubuntu.

$ mkdir ~/itouch
$ sshfs root@192.168.1.110:/var/mobile/Media ~/itouch

Next, we have to get and set the Firewire GUID:

$ cd ~/itouch/iPod_Control/Device
$ su
# lsusb -v -d 05ac: | grep iSerial | awk '{print $3}' | cut -b1-16 | xargs printf "FirewireGuid: 0x%s\n" > SysInfo

Reboot the device. Now, before we can continue with syncing and adding music to the device, we have to modify the database version. This will allow libgpod to recognize and sync your device to Amarok. Sadly, I haven’t gotten this to work with RhythmBox or Exile.

We are going to log into the device, and edit the checkpoint.xml file…

$ ssh root@192.168.1.110
iTouch # nano /System/Library/Lockdown/Checkpoint.xml

Search for the DBVersion Key, and change the value from 4 to 2.

iTouch # reboot

The last thing we have to do is add your device to Amarok so that it will populate your music and you can sync your device.

  • Launch Amarok, and go to Settings => Configure Amarok…
  • Click the ‘Media Devices’ botton at the bottom
  • Click ‘Add Device…’
  • Select ‘Apple iPod Media Device’
  • Name your Device
  • The mount point should be ‘/home/$USER/itouch’ (unless you are using ipod-touch-mount, then it is /media/ipod)
  • Click Ok, and your are all set. Once you are in Amarok, just go to the devices tab on the bottom left (printed sideways) and click the ‘Connect’ button on your device and your music will populate in that device window. You can drag and drop your music into that device from your Amarok music collection as well.