# How to automount Sansa Clip with HAL? [SOLVED]

## unixj

Apologies if this isn't the correct forum...  I'm trying to figure out how to make hal automount my Sansa Clip.  The reason being that when I use Banshee it doesn't appear within Banshee unless I mount it manually.  And then when I click the Disconnect button in Banshee there is the error:

```
Could not disconnect Media Player: org.freedesktop.Hal.Device.Volume.NotMountedByHal: Device to unmount is not in /media/.hal-mtab so it is not mounted by HAL
```

I've already setup udev to create /dev/clip and there's a line in fstab to mount at /mnt/clip.  And when I plug in the Clip I see a process start up:

```
root      9581  4887  0 23:04 ?        00:00:00 hald-addon-storage: polling /dev/sdb (every 2 sec)
```

I also see that the Sansa Clip is mentioned here:

```
/usr/share/hal/fdi/information/10freedesktop/10-usb-music-players.fdi
```

Am I missing anything obvious?  Should this just work?Last edited by unixj on Thu Mar 04, 2010 7:56 am; edited 1 time in total

----------

## Rexilion

 *unixj wrote:*   

> I've already setup udev to create /dev/clip and there's a line in fstab to mount at /mnt/clip.

 

You need to remove that line from /etc/fstab to let HAL work properly.

Can you show me the output of:

```
lsusb -v
```

?

----------

## unixj

Okay I removed that line from /etc/fstab.  No change.  I also tried removing the udev rule.  I do see the Clip listed in lsusb -v:

```
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Device Descriptor:                                            

  bLength                18                                   

  bDescriptorType         1                                   

  bcdUSB               1.10                                   

  bDeviceClass            9 Hub                               

  bDeviceSubClass         0 Unused                            

  bDeviceProtocol         0 Full speed (or root) hub          

  bMaxPacketSize0        64                                   

  idVendor           0x1d6b Linux Foundation                  

  idProduct          0x0001 1.1 root hub                      

  bcdDevice            2.06                                   

  iManufacturer           3 Linux 2.6.31.12 ohci_hcd          

  iProduct                2 OHCI Host Controller              

  iSerial                 1 0000:00:02.1                      

  bNumConfigurations      1                                   

  Configuration Descriptor:                                   

    bLength                 9                                 

    bDescriptorType         2                                 

    wTotalLength           25                                 

    bNumInterfaces          1                                 

    bConfigurationValue     1                                 

    iConfiguration          0                                 

    bmAttributes         0xe0                                 

      Self Powered                                            

      Remote Wakeup                                           

    MaxPower                0mA                               

    Interface Descriptor:                                     

      bLength                 9                               

      bDescriptorType         4                               

      bInterfaceNumber        0                               

      bAlternateSetting       0                               

      bNumEndpoints           1                               

      bInterfaceClass         9 Hub                           

      bInterfaceSubClass      0 Unused                        

      bInterfaceProtocol      0 Full speed (or root) hub      

      iInterface              0                               

      Endpoint Descriptor:                                    

        bLength                 7                             

        bDescriptorType         5                             

        bEndpointAddress     0x81  EP 1 IN                    

        bmAttributes            3                             

          Transfer Type            Interrupt                  

          Synch Type               None                       

          Usage Type               Data                       

        wMaxPacketSize     0x0002  1x 2 bytes                 

        bInterval             255                             

Hub Descriptor:                                               

  bLength               9                                     

  bDescriptorType      41                                     

  nNbrPorts             3                                     

  wHubCharacteristic 0x0002                                   

    No power switching (usb 1.0)                              

    Ganged overcurrent protection                             

  bPwrOn2PwrGood        1 * 2 milli seconds                   

  bHubContrCurrent      0 milli Ampere                        

  DeviceRemovable    0x00                                     

  PortPwrCtrlMask    0xff                                     

 Hub Port Status:                                             

   Port 1: 0000.0100 power                                    

   Port 2: 0000.0100 power                                    

   Port 3: 0000.0100 power                                    

Device Status:     0x0003                                     

  Self Powered                                                

  Remote Wakeup Enabled                                       

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Device Descriptor:                                            

  bLength                18                                   

  bDescriptorType         1                                   

  bcdUSB               1.10                                   

  bDeviceClass            9 Hub                               

  bDeviceSubClass         0 Unused                            

  bDeviceProtocol         0 Full speed (or root) hub          

  bMaxPacketSize0        64                                   

  idVendor           0x1d6b Linux Foundation                  

  idProduct          0x0001 1.1 root hub                      

  bcdDevice            2.06                                   

  iManufacturer           3 Linux 2.6.31.12 ohci_hcd          

  iProduct                2 OHCI Host Controller              

  iSerial                 1 0000:00:02.0                      

  bNumConfigurations      1                                   

  Configuration Descriptor:                                   

    bLength                 9                                 

    bDescriptorType         2                                 

    wTotalLength           25                                 

    bNumInterfaces          1                                 

    bConfigurationValue     1                                 

    iConfiguration          0                                 

    bmAttributes         0xe0                                 

      Self Powered                                            

      Remote Wakeup                                           

    MaxPower                0mA                               

    Interface Descriptor:                                     

      bLength                 9                               

      bDescriptorType         4                               

      bInterfaceNumber        0                               

      bAlternateSetting       0                               

      bNumEndpoints           1                               

      bInterfaceClass         9 Hub                           

      bInterfaceSubClass      0 Unused                        

      bInterfaceProtocol      0 Full speed (or root) hub      

      iInterface              0                               

      Endpoint Descriptor:                                    

        bLength                 7                             

        bDescriptorType         5                             

        bEndpointAddress     0x81  EP 1 IN                    

        bmAttributes            3                             

          Transfer Type            Interrupt                  

          Synch Type               None                       

          Usage Type               Data                       

        wMaxPacketSize     0x0002  1x 2 bytes                 

        bInterval             255                             

Hub Descriptor:                                               

  bLength               9                                     

  bDescriptorType      41                                     

  nNbrPorts             3                                     

  wHubCharacteristic 0x0002                                   

    No power switching (usb 1.0)                              

    Ganged overcurrent protection                             

  bPwrOn2PwrGood        1 * 2 milli seconds                   

  bHubContrCurrent      0 milli Ampere                        

  DeviceRemovable    0x00                                     

  PortPwrCtrlMask    0xff                                     

 Hub Port Status:                                             

   Port 1: 0000.0100 power                                    

   Port 2: 0000.0100 power                                    

   Port 3: 0000.0100 power                                    

Device Status:     0x0003                                     

  Self Powered                                                

  Remote Wakeup Enabled                                       

Bus 001 Device 009: ID 0781:7435 SanDisk Corp. 

Device Descriptor:                             

  bLength                18                    

  bDescriptorType         1                    

  bcdUSB               2.00                    

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0                             

  bDeviceProtocol         0                             

  bMaxPacketSize0        64                             

  idVendor           0x0781 SanDisk Corp.               

  idProduct          0x7435                             

  bcdDevice           a6.d8                             

  iManufacturer           1 SanDisk                     

  iProduct                2 SanDisk Sansa Clip          

  iSerial                 3 AA29F20B0016B6A80000000000000000

  bNumConfigurations      1                                 

  Configuration Descriptor:                                 

    bLength                 9                               

    bDescriptorType         2                               

    wTotalLength           32                               

    bNumInterfaces          1                               

    bConfigurationValue     1                               

    iConfiguration          4 config1: Mass Storage only    

    bmAttributes         0x80                               

      (Bus Powered)                                         

    MaxPower              500mA                             

    Interface Descriptor:                                   

      bLength                 9                             

      bDescriptorType         4                             

      bInterfaceNumber        0                             

      bAlternateSetting       0                             

      bNumEndpoints           2                             

      bInterfaceClass         8 Mass Storage                

      bInterfaceSubClass      6 SCSI                        

      bInterfaceProtocol     80 Bulk (Zip)                  

      iInterface              5 ms ifac 1 (SCSI::BULK_ONLY) 

      Endpoint Descriptor:                                  

        bLength                 7                           

        bDescriptorType         5                           

        bEndpointAddress     0x81  EP 1 IN                  

        bmAttributes            2                           

          Transfer Type            Bulk                     

          Synch Type               None                     

          Usage Type               Data                     

        wMaxPacketSize     0x0200  1x 512 bytes             

        bInterval               0                           

      Endpoint Descriptor:                                  

        bLength                 7                           

        bDescriptorType         5                           

        bEndpointAddress     0x02  EP 2 OUT                 

        bmAttributes            2                           

          Transfer Type            Bulk                     

          Synch Type               None                     

          Usage Type               Data                     

        wMaxPacketSize     0x0200  1x 512 bytes             

        bInterval               0                           

Device Qualifier (for other device speed):                  

  bLength                10                                 

  bDescriptorType         6                                 

  bcdUSB               2.00                                 

  bDeviceClass            0 (Defined at Interface level)    

  bDeviceSubClass         0                                 

  bDeviceProtocol         0                                 

  bMaxPacketSize0        64                                 

  bNumConfigurations      1                                 

Device Status:     0x0000                                   

  (Bus Powered)                                             

Bus 001 Device 002: ID 7720:7581  

Device Descriptor:                

  bLength                18       

  bDescriptorType         1       

  bcdUSB               2.00       

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0                             

  bDeviceProtocol         0                             

  bMaxPacketSize0        64                             

  idVendor           0x7720                             

  idProduct          0x7581                             

  bcdDevice            1.00                             

  iManufacturer           1 Transcend                   

  iProduct                2 TS128GSSD18M-M              

  iSerial                 3 128100000003                

  bNumConfigurations      1                             

  Configuration Descriptor:                             

    bLength                 9                           

    bDescriptorType         2                           

    wTotalLength           32                           

    bNumInterfaces          1                           

    bConfigurationValue     1                           

    iConfiguration          4 128100000003              

    bmAttributes         0xc0                           

      Self Powered                                      

    MaxPower                2mA                         

    Interface Descriptor:                               

      bLength                 9                         

      bDescriptorType         4                         

      bInterfaceNumber        0                         

      bAlternateSetting       0                         

      bNumEndpoints           2                         

      bInterfaceClass         8 Mass Storage            

      bInterfaceSubClass      6 SCSI                    

      bInterfaceProtocol     80 Bulk (Zip)              

      iInterface              6 128100000003            

      Endpoint Descriptor:                              

        bLength                 7                       

        bDescriptorType         5                       

        bEndpointAddress     0x81  EP 1 IN              

        bmAttributes            2                       

          Transfer Type            Bulk                 

          Synch Type               None                 

          Usage Type               Data                 

        wMaxPacketSize     0x0200  1x 512 bytes         

        bInterval               0                       

      Endpoint Descriptor:                              

        bLength                 7                       

        bDescriptorType         5                       

        bEndpointAddress     0x02  EP 2 OUT             

        bmAttributes            2                       

          Transfer Type            Bulk                 

          Synch Type               None                 

          Usage Type               Data                 

        wMaxPacketSize     0x0200  1x 512 bytes         

        bInterval               0                       

Device Qualifier (for other device speed):              

  bLength                10                             

  bDescriptorType         6                             

  bcdUSB               2.00                             

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0                             

  bDeviceProtocol         0

  bMaxPacketSize0        64

  bNumConfigurations      1

Device Status:     0x0001

  Self Powered

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            9 Hub

  bDeviceSubClass         0 Unused

  bDeviceProtocol         0 Full speed (or root) hub

  bMaxPacketSize0        64

  idVendor           0x1d6b Linux Foundation

  idProduct          0x0002 2.0 root hub

  bcdDevice            2.06

  iManufacturer           3 Linux 2.6.31.12 ehci_hcd

  iProduct                2 EHCI Host Controller

  iSerial                 1 0000:00:02.2

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           25

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0

    bmAttributes         0xe0

      Self Powered

      Remote Wakeup

    MaxPower                0mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass         9 Hub

      bInterfaceSubClass      0 Unused

      bInterfaceProtocol      0 Full speed (or root) hub

      iInterface              0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0004  1x 4 bytes

        bInterval              12

Hub Descriptor:

  bLength               9

  bDescriptorType      41

  nNbrPorts             6

  wHubCharacteristic 0x000a

    No power switching (usb 1.0)

    Per-port overcurrent protection

  bPwrOn2PwrGood       10 * 2 milli seconds

  bHubContrCurrent      0 milli Ampere

  DeviceRemovable    0x00

  PortPwrCtrlMask    0xff

 Hub Port Status:

   Port 1: 0000.0503 highspeed power enable connect

   Port 2: 0000.0100 power

   Port 3: 0000.0100 power

   Port 4: 0000.0100 power

   Port 5: 0000.0503 highspeed power enable connect

   Port 6: 0000.0100 power

Device Status:     0x0003

  Self Powered

  Remote Wakeup Enabled
```

----------

## Rexilion

 *unixj wrote:*   

> I also see that the Sansa Clip is mentioned here:
> 
> ```
> /usr/share/hal/fdi/information/10freedesktop/10-usb-music-players.fdi
> ```
> ...

 

Looking at the file, it says you should also upgrade it's firmware I recommend you do that:

/usr/share/hal/fdi/information/10freedesktop/10-usb-music-players.fdi

Furthermore, it's an MTP device so you can't 'mount' it as an ordinary filesystem. MTP is a partial(?) proprietary Microsoft protocol to communicate with the device. In Windows, this is completely transparent to the user, you won't notice. 

However, it is indeed mentioned in the file you said (10-usb-music-players.fdi), the weird thing is, other players (which 'look' like yours) (like 0x7434) are also mentioned in another file and yours is excluded (maybe they forgot?). 

So I recommend you create the file:

/etc/hal/fdi/policy/10-usb-custom-music-player.fdi containing the following (ripped this from the file and adjusted it for your player):

```
 <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<!-- This file was generated by /var/tmp/portage/media-libs/libmtp-0.3.7/work/libmtp-0.3.7/examples/.libs/lt-hotplug - - fdi -->

<deviceinfo version="0.2">

  <device>

    <match key="info.subsystem" string="usb">

     <!-- SanDisk Sansa from unixj -->

      <match key="usb.vendor_id" int="0x0781">

        <match key="usb.product_id" int="0x7435">

          <match key="info.capabilities" contains_not="portable_audio_player">

            <append key="info.capabilities" type="strlist">portable_audio_player</append>

          </match>

          <merge key="info.vendor" type="string">SanDisk</merge>

          <merge key="info.product" type="string">Sansa Clip from unixj</merge>

          <merge key="info.category" type="string">portable_audio_player</merge>

          <merge key="portable_audio_player.access_method" type="string">user</merge>

          <match key="portable_audio_player.access_method.protocols" contains_not="mtp">

            <append key="portable_audio_player.access_method.protocols" type="strlist">mtp</append>

          </match>

          <append key="portable_audio_player.access_method.drivers" type="strlist">libmtp</append>

          <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">

            <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>

          </match>

          <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">

            <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>

          </match>

          <merge key="portable_audio_player.libmtp.protocol" type="string">mtp</merge>

        </match>

      </match>

    </match>

  </device>

</deviceinfo>
```

After you have done that, reboot your box and see if it works. Btw, if you added any custom udev rule or /etc/fstab rule, I suggest you remove all that and leave those settings in their exact original state.

----------

## unixj

 *Rexilion wrote:*   

> 
> 
> Looking at the file, it says you should also upgrade it's firmware I recommend you do that:
> 
> /usr/share/hal/fdi/information/10freedesktop/10-usb-music-players.fdi
> ...

 

Thanks for trying to help!  I appreciate it.  I think that comment about upgrading firmware would only apply if the firmware wasn't already upgraded.  I updated my firmware the same day the update came out back in Feb 2009.  Just checked and there is no additional update- even checked the sum of the firmware files.  There *is* a newer version of the Clip called Clip+ so it's possible that's why the Clip isn't mentioned in that mtp file you referenced.

Regarding MTP...  The Clip can use either MTP or MSC.  I tried MTP originally but it was super slow.  And there's no need since I'm not using drm.  So from the beginning I've been using in MSC mode.  It mounts as an external usb drive.  And Banshee notices and displays when I mount it...  It just doesn't mount automatically.

Already removed the custom fstab and udev...

----------

## Rexilion

Try replacing our 10-usb-custom-music-player.fdi with the following and then reboot (again, don't do anything with udev or fstab):

```
 <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<!-- This file was generated by /var/tmp/portage/media-libs/libmtp-0.3.7/work/libmtp-0.3.7/examples/.libs/lt-hotplug - - fdi -->

<deviceinfo version="0.2">

  <device>

    <match key="info.subsystem" string="usb">

     <!-- SanDisk Sansa from unixj -->

      <match key="usb.vendor_id" int="0x0781">

        <match key="usb.product_id" int="0x7435">

          <match key="info.capabilities" contains_not="portable_audio_player">

            <append key="info.capabilities" type="strlist">portable_audio_player</append>

          </match>

          <merge key="info.vendor" type="string">SanDisk</merge>

          <merge key="info.product" type="string">Sansa Clip from unixj</merge>

          <merge key="info.category" type="string">portable_audio_player</merge>

          <merge key="portable_audio_player.access_method" type="storage">user</merge>

          <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">

            <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>

          </match>

          <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">

            <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>

          </match>

        </match>

      </match>

    </match>

  </device>

</deviceinfo>
```

----------

## unixj

Regret to say there is no change.  Copied that file to /etc/hal/fdi/policy/10-usb-custom-music-player.fdi and rebooted.  The output from lsusb -v is identical except for one tiny change which I don't think is significant (Devic 006 instead of 009):

```
Bus 001 Device 006: ID 0781:7435 SanDisk Corp.
```

It seems that HAL sees the device but doesn't want (or know how) to mount it.

----------

## Rexilion

Looking at the file again, I spotted a made a small (yet critical) typo, can you try this one? (again, place it and reboot):

```
 <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<!-- This file was generated by /var/tmp/portage/media-libs/libmtp-0.3.7/work/libmtp-0.3.7/examples/.libs/lt-hotplug - - fdi -->

<deviceinfo version="0.2">

  <device>

    <match key="info.subsystem" string="usb">

     <!-- SanDisk Sansa from unixj -->

      <match key="usb.vendor_id" int="0x0781">

        <match key="usb.product_id" int="0x7435">

          <match key="info.capabilities" contains_not="portable_audio_player">

            <append key="info.capabilities" type="strlist">portable_audio_player</append>

          </match>

          <merge key="info.vendor" type="string">SanDisk</merge>

          <merge key="info.product" type="string">Sansa Clip from unixj</merge>

          <merge key="info.category" type="string">portable_audio_player</merge>

          <merge key="portable_audio_player.access_method" type="strlist">storage</merge>

          <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">

            <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>

          </match>

          <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">

            <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>

          </match>

        </match>

      </match>

    </match>

  </device>

</deviceinfo>
```

----------

## unixj

Hey that works!  Or rather it doesn't mount automatically but HAL is happy with it.  I can mount automatically using the device manager here.

It appears in Banshee and the Disconnect button works.  Thanks very much!  :Smile: 

----------

## Rexilion

One more try (you know the drill   :Wink:  ):

```
 <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<!-- This file was generated by /var/tmp/portage/media-libs/libmtp-0.3.7/work/libmtp-0.3.7/examples/.libs/lt-hotplug - - fdi -->

<deviceinfo version="0.2">

  <device>

    <match key="info.subsystem" string="usb">

     <!-- SanDisk Sansa from unixj -->

      <match key="usb.vendor_id" int="0x0781">

        <match key="usb.product_id" int="0x7435">

          <match key="info.capabilities" contains_not="portable_audio_player">

            <append key="info.capabilities" type="strlist">portable_audio_player</append>

          </match>

          <merge key="storage.automount_enabled_hint" type="bool">true</merge>

          <merge key="info.vendor" type="string">SanDisk</merge>

          <merge key="info.product" type="string">Sansa Clip from unixj</merge>

          <merge key="info.category" type="string">portable_audio_player</merge>

          <merge key="portable_audio_player.access_method" type="strlist">storage</merge>

          <match key="portable_audio_player.output_formats" contains_not="audio/mpeg">

            <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>

          </match>

          <match key="portable_audio_player.output_formats" contains_not="audio/x-ms-wma">

            <append key="portable_audio_player.output_formats" type="strlist">audio/x-ms-wma</append>

          </match>

        </match>

      </match>

    </match>

  </device>

</deviceinfo>
```

----------

## unixj

Hmm still doesn't automount.  But I actually prefer that new device manager, because it disappears after a configurable number of seconds (in addition to automounting).  Supposedly it will be included in 4.4, or maybe it is already.

----------

