Re: [Banshee-List] iPod is seen as read only since 0.12.1 (and changes to libipoddevice)



Hi Bill,

I did this same research yesterday and as it turns out, I need to revise
my position on this in libipoddevice as I need to support HAL >= 0.5.6,
and thus can't rely on this property. 

Thus I will be committing a patch to make it work in < 0.5.8. It will
use the volume.is_mounted_read_only if the property exists and if not it
will fall back to legacy checks to determine of the volume can be
written to.

Thanks for looking into this though. I could have sworn
volume.is_mounted_read_only was a lot older than 0.5.8.

--Aaron

On Thu, 2007-04-05 at 12:31 +0200, Bill Dawson wrote:
> Just in case anybody else ever has this problem, here's what I found:
> 
> volume.is_mounted_read_only started as part of the HAL spec 0.5.8. (The
> code was added to the HAL source in March 2006.)  
> 
> Gentoo's latest "unmasked" HAL is 0.5.7, and that's what I'm running,
> which explains why I don't get that property exported.  
> 
> I don't really care, because I'll upgrade now to 0.5.9 (which is in
> Gentoo's portage tree but masked). 0.5.8 appears to have never been in
> Gentoo's tree.
> 
> regards,
> bill
> 
> On Wed, 2007-04-04 at 18:44 -0400, Aaron Bockover wrote:
> > I'm not really sure how to troubleshoot this other than that
> > volume.is_volume_mounted_readonly is a mandatory property for volume
> > devices in HAL, is expected to be their by libipoddevice (and if not
> > your volume is considered read only), and your device doesn't have it.
> > 
> > http://people.freedesktop.org/~david/hal-spec/hal-spec.html#device-properties-volume
> > 
> > I'm not sure when this property was introduced but it should be well
> > before 0.5.7.
> > 
> > --Aaron
> > 
> > 
> > On Wed, 2007-04-04 at 23:31 +0200, Bill Dawson wrote:
> > > Dare I say it? It's gentoo (uh oh?).  
> > > 
> > > gnome-volume-manager 2.15.0
> > > HAL package version: 0.5.7.1
> > > 
> > > 
> > > On Wed, 2007-04-04 at 17:08 -0400, Aaron Bockover wrote:
> > > > The problem is that your HAL and/or mount daemon (like GNOME Volume
> > > > Manager) did not merge the volume.is_mounted_read_only property into the
> > > > device tree, so we cannot verify how the mount is set up. I had to
> > > > change the readonly detection logic to cater to HFS+ iPods, hence the
> > > > change. While it may look like a regression in libipoddevice, it's
> > > > actually due to an issue in your HAL/mount daemon.
> > > > 
> > > > What version of HAL are you using and what mount daemon and version
> > > > (gnome-volume-manager, ivman, etc.). What distro?
> > > > 
> > > > The stuff printed to stderr looks like problems with your DBus
> > > > installation.
> > > > 
> > > > --Aaron
> > > > 
> > > > On Wed, 2007-04-04 at 21:30 +0200, Bill Dawson wrote:
> > > > > Here you go. The script produced both std and err output, and I
> > > > > redirected them both to the same file, which is now pasted below. (all
> > > > > the err stuff ended up on top.)  Thanks for having a look.
> > > > > 
> > > > > process 16717: Applications must not close shared connections - see
> > > > > dbus_connection_close() docs. This is a bug in the application.
> > > > >   D-Bus not built with -rdynamic so unable to print a backtrace
> > > > > ./ipod-debug-dump.sh: line 20: 16717 Aborted                 hal-device
> > > > > $udi
> > > > > process 16719: Applications must not close shared connections - see
> > > > > dbus_connection_close() docs. This is a bug in the application.
> > > > >   D-Bus not built with -rdynamic so unable to print a backtrace
> > > > > ./ipod-debug-dump.sh: line 31: 16719 Aborted                 hal-device
> > > > > $child_udi
> > > > > process 16722: Applications must not close shared connections - see
> > > > > dbus_connection_close() docs. This is a bug in the application.
> > > > >   D-Bus not built with -rdynamic so unable to print a backtrace
> > > > > ./ipod-debug-dump.sh: line 31: 16722 Aborted                 hal-device
> > > > > $child_udi
> > > > >       wcdiii
> > > > >    Host Name:        BILLIBM
> > > > > 
> > > > > 
> > > > > 
> > > > > [[-------------------- HAL Dump -------------------]]
> > > > > 
> > > > > <---- iPod Device 1 ---->
> > > > > udi =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > >   info.addons = { 'hald-addon-storage' } (string list)
> > > > >   portable_audio_player.output_formats = { 'audio/mpeg', 'audio/aac' }
> > > > > (string list)
> > > > >   portable_audio_player.storage_device =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > > (string)
> > > > >   portable_audio_player.type = 'ipod'  (string)
> > > > >   portable_audio_player.access_method = 'storage'  (string)
> > > > >   block.storage_device =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > > (string)
> > > > >   info.udi =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > > (string)
> > > > >   storage.requires_eject = true  (bool)
> > > > >   storage.hotpluggable = true  (bool)
> > > > >   info.capabilities = { 'storage', 'block', 'portable_audio_player' }
> > > > > (string list)
> > > > >   info.category = 'portable_audio_player'  (string)
> > > > >   info.product = 'iPod'  (string)
> > > > >   info.vendor = 'Apple'  (string)
> > > > >   storage.removable = true  (bool)
> > > > >   storage.physical_device =
> > > > > '/org/freedesktop/Hal/devices/usb_device_5ac_1205_000000925917_if0'
> > > > > (string)
> > > > >   storage.lun = 0  (0x0)  (int)
> > > > >   storage.firmware_version = '1.62'  (string)
> > > > >   storage.serial = 'Apple_iPod_000000925917'  (string)
> > > > >   storage.vendor = 'Apple'  (string)
> > > > >   storage.model = 'iPod'  (string)
> > > > >   storage.drive_type = 'disk'  (string)
> > > > >   storage.automount_enabled_hint = true  (bool)
> > > > >   storage.media_check_enabled = true  (bool)
> > > > >   storage.no_partitions_hint = false  (bool)
> > > > >   storage.bus = 'usb'  (string)
> > > > >   block.is_volume = false  (bool)
> > > > >   block.minor = 0  (0x0)  (int)
> > > > >   block.major = 8  (0x8)  (int)
> > > > >   block.device = '/dev/sda'  (string)
> > > > >   linux.hotplug_type = 3  (0x3)  (int)
> > > > >   info.parent =
> > > > > '/org/freedesktop/Hal/devices/usb_device_5ac_1205_000000925917_if0_scsi_host_scsi_device_lun0'  (string)
> > > > >   linux.sysfs_path_device = '/sys/block/sda'  (string)
> > > > >   linux.sysfs_path = '/sys/block/sda'  (string)
> > > > > 
> > > > > udi = '/org/freedesktop/Hal/devices/volume_part1_size_41094144'
> > > > >   info.udi = '/org/freedesktop/Hal/devices/volume_part1_size_41094144'
> > > > > (string)
> > > > >   volume.partition.msdos_part_table_type = 0  (0x0)  (int)
> > > > >   info.product = 'Volume'  (string)
> > > > >   volume.size = 41094144  (0x2730c00)  (uint64)
> > > > >   volume.num_blocks = 80262  (0x13986)  (int)
> > > > >   volume.block_size = 512  (0x200)  (int)
> > > > >   volume.partition.number = 1  (0x1)  (int)
> > > > >   info.capabilities = { 'volume', 'block' } (string list)
> > > > >   info.category = 'volume'  (string)
> > > > >   volume.is_partition = true  (bool)
> > > > >   volume.is_disc = false  (bool)
> > > > >   volume.is_mounted = false  (bool)
> > > > >   volume.mount_point = ''  (string)
> > > > >   volume.label = ''  (string)
> > > > >   volume.uuid = ''  (string)
> > > > >   volume.fsversion = ''  (string)
> > > > >   volume.fsusage = ''  (string)
> > > > >   volume.fstype = ''  (string)
> > > > >   storage.model = ''  (string)
> > > > >   block.storage_device =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > > (string)
> > > > >   block.is_volume = true  (bool)
> > > > >   block.minor = 1  (0x1)  (int)
> > > > >   block.major = 8  (0x8)  (int)
> > > > >   block.device = '/dev/sda1'  (string)
> > > > >   linux.hotplug_type = 3  (0x3)  (int)
> > > > >   info.parent =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > > (string)
> > > > >   linux.sysfs_path_device = '/sys/block/sda/sda1'  (string)
> > > > >   linux.sysfs_path = '/sys/block/sda/sda1'  (string)
> > > > > 
> > > > > udi = '/org/freedesktop/Hal/devices/volume_uuid_B258_9E2A'
> > > > >   info.hal_mount.mounted_by_uid = 1000  (0x3e8)  (int)
> > > > >   info.hal_mount.created_mount_point = '/media/BLUEMINI'  (string)
> > > > >   info.callouts.add = { 'hal-ipod-info' } (string list)
> > > > >   volume.unmount.valid_options = { 'lazy' } (string list)
> > > > >   volume.mount.valid_options = { 'ro', 'sync', 'dirsync', 'noatime',
> > > > > 'nodiratime', 'noexec', 'quiet', 'utf8', 'shortname=', 'codepage=',
> > > > > 'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid=' } (string list)
> > > > >   org.freedesktop.Hal.Device.Volume.method_execpaths =
> > > > > { 'hal-system-storage-mount', 'hal-system-storage-unmount',
> > > > > 'hal-system-storage-eject', 'hal-ipod-info' } (string list)
> > > > >   org.freedesktop.Hal.Device.Volume.method_signatures = { 'ssas', 'as',
> > > > > 'as', 'as' } (string list)
> > > > >   org.freedesktop.Hal.Device.Volume.method_names = { 'Mount', 'Unmount',
> > > > > 'Eject', 'WriteIpodInfo' } (string list)
> > > > >   info.interfaces = { 'org.freedesktop.Hal.Device.Volume' } (string
> > > > > list)
> > > > >   volume.ignore = false  (bool)
> > > > >   info.udi = '/org/freedesktop/Hal/devices/volume_uuid_B258_9E2A'
> > > > > (string)
> > > > >   volume.partition.msdos_part_table_type = 11  (0xb)  (int)
> > > > >   info.product = 'BLUEMINI'  (string)
> > > > >   volume.size = 4046837760  (0xf135d800)  (uint64)
> > > > >   volume.num_blocks = 7903980  (0x789aec)  (int)
> > > > >   volume.block_size = 512  (0x200)  (int)
> > > > >   volume.partition.number = 2  (0x2)  (int)
> > > > >   info.capabilities = { 'volume', 'block' } (string list)
> > > > >   info.category = 'volume'  (string)
> > > > >   volume.is_partition = true  (bool)
> > > > >   volume.is_disc = false  (bool)
> > > > >   volume.is_mounted = true  (bool)
> > > > >   volume.mount_point = '/media/BLUEMINI'  (string)
> > > > >   volume.label = 'BLUEMINI'  (string)
> > > > >   volume.uuid = 'B258-9E2A'  (string)
> > > > >   volume.fsversion = 'FAT32'  (string)
> > > > >   volume.fsusage = 'filesystem'  (string)
> > > > >   volume.fstype = 'vfat'  (string)
> > > > >   storage.model = ''  (string)
> > > > >   block.storage_device =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > > (string)
> > > > >   block.is_volume = true  (bool)
> > > > >   block.minor = 2  (0x2)  (int)
> > > > >   block.major = 8  (0x8)  (int)
> > > > >   block.device = '/dev/sda2'  (string)
> > > > >   linux.hotplug_type = 3  (0x3)  (int)
> > > > >   info.parent =
> > > > > '/org/freedesktop/Hal/devices/storage_serial_Apple_iPod_000000925917'
> > > > > (string)
> > > > >   linux.sysfs_path_device = '/sys/block/sda/sda2'  (string)
> > > > >   linux.sysfs_path = '/sys/block/sda/sda2'  (string)
> > > > > 
> > > > >       ************************* WARNING *************************
> > > > >       * This iPod suffers from the volume.fsusage=raid bug.     *
> > > > >       * As such, it cannot be used in Banshee. This is not a    *
> > > > >       * Banshee or gnome-volume-manager bug. And the issue is   *
> > > > >       * very well known.                                        *
> > > > >       *                                                         *
> > > > >       * Please read the following web page for more information *
> > > > >       * including possible fixes to the problem:                *
> > > > >       *                                                         *
> > > > >       * http://banshee-project.org/Troubleshooting/iPod/RaidBug *
> > > > >       ***********************************************************
> > > > > 
> > > > > 
> > > > > 
> > > > > On Wed, 2007-04-04 at 12:51 -0400, Aaron Bockover wrote:
> > > > > > Bill,
> > > > > > 
> > > > > > Would you mind running the following script with your Mini plugged in
> > > > > > and paste the results in a reply?
> > > > > > 
> > > > > > http://banshee-project.org/files/ipod-debug-dump.sh
> > > > > > 
> > > > > > Thanks,
> > > > > > Aaron
> > > > > > 
> > > > > > On Wed, 2007-04-04 at 13:43 +0200, Bill Dawson wrote:
> > > > > > > I wonder if anybody else has seen this.  The latest changes to
> > > > > > > libipoddevice -- many of which were to determine if an iPod is read-only
> > > > > > > -- have resulted in my 1st Gen ipod mini (blue) being seen as read-only.
> > > > > > > (For example,the synchronize button is no longer available).
> > > > > > > 
> > > > > > > I traced it back to ipodsharp's Device.cs bool CanWrite returning false.
> > > > > > > It, in turn, reaches into libipoddevice's "can-write" property (if I
> > > > > > > understand the code correctly.)  I've just quickly reviewed the
> > > > > > > libipoddevice's C code recent changes and it looks like a lot has been
> > > > > > > added re making this determination of if something is writeable.  I've
> > > > > > > not studied it too closely-- maybe someone knows a quick fix.  
> > > > > > > 
> > > > > > > I can file a bug to the iPod component if desired.
> > > > > > > 
> > > > > > > In the meantime, I'm just forcing ipodsharp's Device.cs CanWrite() to
> > > > > > > return true.
> > > > > > > 
> > > > > > > iPod properties in Banshee accurately shows my model info:
> > > > > > > 
> > > > > > > Generation: First
> > > > > > > Model: MiniBlue
> > > > > > > Model Number: M9436
> > > > > > > Serial Number: JQ4380FYQKL
> > > > > > > Firmware Version: 2.6.1
> > > > > > > Database version: 13
> > > > > > > Manufactured During: Week 38 of 2004
> > > > > > > 
> > > > > > > Thx, 
> > > > > > > Bill Dawson
> > > > > > > 
> > > > > > > 
> > > > > > > _______________________________________________
> > > > > > > Banshee-list mailing list
> > > > > > > Banshee-list gnome org
> > > > > > > http://mail.gnome.org/mailman/listinfo/banshee-list
> > > > > > 
> > > > > 
> > > > 
> > > 
> > 
> 
> _______________________________________________
> Banshee-list mailing list
> Banshee-list gnome org
> http://mail.gnome.org/mailman/listinfo/banshee-list




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]