Bug 32940

Summary: Rockbox media player (iPod Video)
Product: media-player-info Reporter: Łukasz Stelmach <stlman>
Component: New deviceAssignee: Martin Pitt <martin.pitt>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium Keywords: NEEDINFO
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Łukasz Stelmach 2011-01-09 07:29:33 UTC
The noticeable differences between iPod running Apple's firmware and Rockbox are vendor and model *strings* (IDs remain the same).

$ /sbin/udevadm info --query=all --path=/devices/pci0000:00/0000:00:1d.7/usb2/2-3
P: /devices/pci0000:00/0000:00:1d.7/usb2/2-3
N: bus/usb/002/011
S: char/189:138
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3
E: MAJOR=189
E: MINOR=138
E: DEVNAME=/dev/bus/usb/002/011
E: DEVTYPE=usb_device
E: DRIVER=usb
E: DEVICE=/proc/bus/usb/002/011
E: PRODUCT=5ac/1209/100
E: TYPE=0/0/0
E: BUSNUM=002
E: DEVNUM=011
E: SUBSYSTEM=usb
E: ID_VENDOR=Rockbox.org
E: ID_VENDOR_ENC=Rockbox.org
E: ID_VENDOR_ID=05ac
E: ID_MODEL=Rockbox_media_player
E: ID_MODEL_ENC=Rockbox\x20media\x20player
E: ID_MODEL_ID=1209
E: ID_REVISION=0100
E: ID_SERIAL=Rockbox.org_Rockbox_media_player_100000000000A2700XXXXXXXX
E: ID_SERIAL_SHORT=100000000000A2700XXXXXXXX
E: ID_BUS=usb
E: ID_USB_INTERFACES=:080650:
E: ID_VENDOR_FROM_DATABASE=Apple, Inc.
E: ID_MODEL_FROM_DATABASE=iPod Video
E: DEVLINKS=/dev/char/189:138

Rockbox also reveals the vendor of the USB-Storage interface chip to be TOSHIBA
$ cat /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/host11/target11:0:0/11:0:0:0/vendor
TOSHIBA 

Rockbox runs on a variety of different hardware from different vendors.

Rockbox supports only (as of today) "storage" access.

Audio players with Rockbox firmware support in most cases much wider range of audio formats/codecs. In /.rockbox/codec directory one can find libraries for the following codecs: a52 aac adx aiff alac ape asap atrac3 au cook flac mod mp3 musepack nsf raac shorten sid smaf spc speex tta vorbis vox wav wav64 wavpack wma wmapro.

There are also encoders for the following formats: aiff mp3 wav wavpack.

This however may be different for other hardware platforms. Please check the upstream.

Supported playlist formats are m3u and m3u8 (UTF-8 with BOM)

Rockbox does not impose any restriction on directory structure as it scans the whole volume and builds it's own database. One can, however, disable scanning of particular directory and its children by placing an empty database.ignore file in it.

As of now (version 3.7) Rockbox seems to ignore eject command and it doesn't return to a normal operation upon receiving one so unmounting should suffice.

Although there has been a problem with directory structure depth (http://www.rockbox.org/tracker/task/10396) it has been resolved.

Rockbox equipped player (at least my iPod) may also act as a HID device with several "keyboard layouts" to choose from.
Comment 1 Martin Pitt 2011-02-10 02:58:06 UTC
We actually already have a rule and info file for Rockbox:

ATTRS{product}=="Rockbox media player" , ATTRS{manufacturer}=="Rockbox.org" , ENV{ID_MEDIA_PLAYER}="rockbox"

Which looks like it should by and large fit for your player. Unfortunately you only gave the udev properties, not the USB attributes (which m-p-i matches on). If it doesn't work for you right now, can you please give the output of

/sbin/udevadm info --attribute-walk --path=/devices/pci0000:00/0000:00:1d.7/usb2/2-3

? (The path might have changed since you reported the bug).

Thank you!
Comment 2 Łukasz Stelmach 2011-03-23 05:19:40 UTC
For the record. These are data for the storage endpoint and everything above.

$ /sbin/udevadm info --attribute-walk --path=/devices/pci0000\:00/0000\:00\:1d.1/usb7/7-1/7-1\:1.0

  looking at device '/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0':
    KERNEL=="7-1:1.0"
    SUBSYSTEM=="usb"
    DRIVER=="usb-storage"
    ATTR{bInterfaceNumber}=="00"
    ATTR{bAlternateSetting}==" 0"
    ATTR{bNumEndpoints}=="02"
    ATTR{bInterfaceClass}=="08"
    ATTR{bInterfaceSubClass}=="06"
    ATTR{bInterfaceProtocol}=="50"
    ATTR{modalias}=="usb:v05ACp1209d0100dc00dsc00dp00ic08isc06ip50"
    ATTR{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb7/7-1':
    KERNELS=="7-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{urbnum}=="2175"
    ATTRS{idVendor}=="05ac"
    ATTRS{idProduct}=="1209"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="7"
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="1"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Rockbox.org"
    ATTRS{product}=="Rockbox media player"
    ATTRS{serial}=="300000000000XXXXXXXXXXXXX"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb7':
    KERNELS=="usb7"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="31"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0001"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="7"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.36-gentoo-r5-1stl uhci_hcd"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.1"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.1':
    KERNELS=="0000:00:1d.1"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x2935"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x8277"
    ATTRS{class}=="0x0c0300"
    ATTRS{irq}=="19"
    ATTRS{local_cpus}=="ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{modalias}=="pci:v00008086d00002935sv00001043sd00008277bc0Csc03i00"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

This is HID endpoint (Rockbox can emulate USB keybord)

  looking at device '/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.1':
    KERNEL=="7-1:1.1"
    SUBSYSTEM=="usb"
    DRIVER=="usbhid"
    ATTR{bInterfaceNumber}=="01"
    ATTR{bAlternateSetting}==" 0"
    ATTR{bNumEndpoints}=="01"
    ATTR{bInterfaceClass}=="03"
    ATTR{bInterfaceSubClass}=="01"
    ATTR{bInterfaceProtocol}=="01"
    ATTR{modalias}=="usb:v05ACp1209d0100dc00dsc00dp00ic03isc01ip01"
    ATTR{supports_autosuspend}=="1"
Comment 3 Martin Pitt 2011-03-24 09:02:59 UTC
This looks expected, although you unfortunately only sent the info for the raw usb device, not the block device on it. I just noticed that you actually did the same in the original bug. The ID_MEDIA_PLAYER attribute is *not* supposed to be on teh raw usb device, but on the associated block device, i. e. the part that gets mounted. Can you please check /sbin/udevadm info --query=all --name=sdb1 (or whatever your device name is when you plug it in)?
Comment 4 Martin Pitt 2011-04-19 02:56:38 UTC
Łukasz, did you have a chance to run the command I asked for in the previous comment?
Comment 5 Łukasz Stelmach 2011-04-20 00:25:24 UTC
Data partition
# udevadm info --query=all --name=sdf2 
P: /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/host8/target8:0:0/8:0:0:0/block/sdf/sdf2
N: sdf2
W: 17
S: block/8:82
S: disk/by-id/usb-TOSHIBA_MK6008GAH_X00000000000AXX00XXXXAXXA-0:0-part2
S: disk/by-path/pci-0000:00:1d.7-usb-0:3:1.0-scsi-0:0:0:0-part2
S: disk/by-uuid/4F95-CFF0
S: disk/by-label/IPOD
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/host8/target8:0:0/8:0:0:0/block/sdf/sdf2
E: MAJOR=8
E: MINOR=82
E: DEVNAME=/dev/sdf2
E: DEVTYPE=partition
E: SUBSYSTEM=block
E: ID_MEDIA_PLAYER=rockbox
E: ID_VENDOR=TOSHIBA
E: ID_VENDOR_ENC=TOSHIBA\x20
E: ID_VENDOR_ID=05ac
E: ID_MODEL=MK6008GAH
E: ID_MODEL_ENC=MK6008GAH\x20\x20\x20\x20\x20\x20\x20
E: ID_MODEL_ID=1209
E: ID_REVISION=BU01
E: ID_SERIAL=TOSHIBA_MK6008GAH_X00000000000AXX00XXXXAXXA-0:0
E: ID_SERIAL_SHORT=X00000000000AXX00XXXXAXXA
E: ID_TYPE=disk
E: ID_INSTANCE=0:0
E: ID_BUS=usb
E: ID_USB_INTERFACES=:080650:030101:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=usb-storage
E: ID_PATH=pci-0000:00:1d.7-usb-0:3:1.0-scsi-0:0:0:0
E: ID_PART_TABLE_TYPE=dos
E: ID_FS_LABEL=IPOD
E: ID_FS_LABEL_ENC=IPOD
E: ID_FS_UUID=4F95-CFF0
E: ID_FS_UUID_ENC=4F95-CFF0
E: ID_FS_VERSION=FAT32
E: ID_FS_TYPE=vfat
E: ID_FS_USAGE=filesystem
E: ID_PART_ENTRY_SCHEME=dos
E: ID_PART_ENTRY_TYPE=0xb
E: ID_PART_ENTRY_NUMBER=2
E: UDISKS_PRESENTATION_NOPOLICY=0
E: UDISKS_PARTITION=1
E: UDISKS_PARTITION_SCHEME=mbr
E: UDISKS_PARTITION_NUMBER=2
E: UDISKS_PARTITION_TYPE=0x0b
E: UDISKS_PARTITION_SIZE=59896488960
E: UDISKS_PARTITION_SLAVE=/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/host8/target8:0:0/8:0:0:0/block/sdf
E: UDISKS_PARTITION_OFFSET=115153920
E: UDISKS_PARTITION_ALIGNMENT_OFFSET=0
E: UDISKS_PRESENTATION_ICON_NAME=multimedia-player-ipod-white
E: DEVLINKS=/dev/block/8:82 /dev/disk/by-id/usb-TOSHIBA_MK6008GAH_X00000000000AXX00XXXXAXXA-0:0-part2 /dev/disk/by-path/pci-0000:00:1d.7-usb-0:3:1.0-scsi-0:0:0:0-part2 /dev/disk/by-uuid/4F95-CFF0 /dev/disk/by-label/IPOD

I've just installed media-player-info-13 (the latest available in Gentoo)
Comment 6 Martin Pitt 2011-04-21 04:26:40 UTC
This correctly shows "E: ID_MEDIA_PLAYER=rockbox", so the m-p-i identification worked. What's actually not working with this then?

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.