Child pages
  • Smartphone usage
Skip to end of metadata
Go to start of metadata

If you tried to use your smart phone under OI, there are few conditions that you have to match:

  • Optionally: Luckily, Illumos has implemented support for USB 3 (see note) so you might use that too, if your PC support it. In my case, I have tried that.
  • Mandatory: After notice that gmtp package (and its library) were updated I have decided to give it try (many thanks to Alexander Phyhalov for his valuable input). For more info about gMTP check official site (MTP stands for "Media Transfer Protocol").

I poses Samsung S7 Edge smartphone (and connected it with micro USB cable to USB 3 port on my desktop PC). Let us check how/if system has recognized it:

/var/adm/messages
[2017-05-05 15:02:39] xxx usba: [ID 912658 kern.info] USB 2.0 device (usb4e8,6860) operating at hi speed (USB 2.x) on USB 3.0 root hub: device@9, usb_mid6 at bus address 4
[2017-05-05 15:02:39] xxx usba: [ID 349649 kern.info] SAMSUNG SAMSUNG_Android 9885e6364c4f535a4e
[2017-05-05 15:02:39] xxx genunix: [ID 936769 kern.info] usb_mid6 is /pci@0,0/pci1849,a12f@14/device@9
[2017-05-05 15:02:39] xxx genunix: [ID 408114 kern.info] /pci@0,0/pci1849,a12f@14/device@9 (usb_mid6) online
[2017-05-05 15:02:39] xxx usba: [ID 349649 kern.info] usba:#011no driver found for interface 0 (nodename: 'image') of SAMSUNG SAMSUNG_Android 9885e6364c4f535a4e
prtconf -v
            device, instance #6
                Driver properties:
                    name='pm-components' type=string items=3 dev=none
                        value='NAME= usb_mid6 Power' + '0=USB D3 State' + '3=USB D0 State'
                Hardware properties:
                    name='driver-minor' type=int items=1
                        value=00000000
                    name='driver-major' type=int items=1
                        value=00000002
                    name='high-speed' type=boolean
                    name='configuration#' type=int items=1
                        value=00000001
                    name='usb-product-name' type=string items=1
                        value='SAMSUNG_Android'
                    name='usb-vendor-name' type=string items=1
                        value='SAMSUNG'
                    name='usb-serialno' type=string items=1
                        value='9885e6364c4f535a4e'
                    name='usb-raw-cfg-descriptors' type=byte items=47
                        value=09.02.2f.00.01.01.00.c0.30.09.04.00.00.03.06.01.01.05.07.05.81.02.00.02.00.07.05.01.02.00.02.01.07.05.82.03.1c.00.06.08.24.80.0c.00.01.00.01
                    name='usb-dev-descriptor' type=byte items=18
                        value=12.01.00.02.00.00.00.40.e8.04.60.68.00.04.02.03.04.02
                    name='usb-release' type=int items=1
                        value=00000200
                    name='usb-num-configs' type=int items=1
                        value=00000002
                    name='usb-revision-id' type=int items=1
                        value=00000400
                    name='usb-product-id' type=int items=1
                        value=00006860
                    name='usb-vendor-id' type=int items=1
                        value=000004e8
                    name='compatible' type=string items=5
                        value='usb4e8,6860.400.config1' + 'usb4e8,6860.400' + 'usb4e8,6860.1' + 'usb4e8,6860' + 'usb,device'
                    name='reg' type=int items=1
                        value=00000009
                    name='assigned-address' type=int items=1
                        value=00000004
                Device Minor Nodes:
                    dev=(251,3072)
                        dev_path=/pci@0,0/pci1849,a12f@14/device@9:usb_mid
                            spectype=chr type=minor
                            dev_link=/dev/usb/device1
                    dev=(251,3073)
                        dev_path=/pci@0,0/pci1849,a12f@14/device@9:4e8.6860.devstat
                            spectype=chr type=minor
                            dev_link=/dev/usb/4e8.6860/0/devstat
                    dev=(251,3074)
...

looks like it WAS recognized. Let us check for gmtp package and library:

pkg info system/media/gmtp library/libmtp
Name: library/libmtp
       Summary: libmtp is an Initiator implementation of the Media Transfer
                Protocol
      Category: System/Libraries
         State: Installed
     Publisher: openindiana.org
       Version: 1.1.13
        Branch: 2017.0.0.0
Packaging Date: Thu May  4 18:58:33 2017
          Size: 1.61 MB
          FMRI: pkg://openindiana.org/library/libmtp@1.1.13-2017.0.0.0:20170504T185833Z
   Project URL: http://libmtp.sourceforge.net/
    Source URL: http://sourceforge.net/projects/libmtp/files/libmtp/1.1.13/libmtp-1.1.13.tar.gz/download/

Name: system/media/gmtp
       Summary: A simple MP3 and Media player client for UNIX and UNIX like
                systems
      Category: Applications/Accessories
         State: Installed
     Publisher: openindiana.org
       Version: 1.3.10
        Branch: 2017.0.0.0
Packaging Date: Thu May  4 18:57:30 2017
          Size: 409.79 kB
          FMRI: pkg://openindiana.org/system/media/gmtp@1.3.10-2017.0.0.0:20170504T185730Z
   Project URL: http://gmtp.sourceforge.net/
    Source URL: http://sourceforge.net/projects/gmtp/files/gMTP-1.3.10/gmtp-1.3.10.tar.gz/download

Now, we can check IF MTP can be detected:

pfexec mtp-detect
libmtp version: 1.1.13

Listing raw device(s)
   Found 1 device(s):
   Samsung: Galaxy models (MTP) (04e8:6860) @ bus 160, dev 4
Attempting to connect device(s)
USB low-level info:
   Interface has a kernel driver attached.
   bcdUSB: 512
   bDeviceClass: 0
   bDeviceSubClass: 0
   bDeviceProtocol: 0
   idVendor: 04e8
   idProduct: 6860
   IN endpoint maxpacket: 512 bytes
   OUT endpoint maxpacket: 512 bytes
   Raw device info:
      Bus location: 160
      Device number: 4
      Device entry info:
         Vendor: Samsung
         Vendor id: 0x04e8
         Product: Galaxy models (MTP)
         Vendor id: 0x6860
         Device flags: 0x48000202
Device info:
   Manufacturer: Samsung Electronics Co., Ltd.
   Model: SM-G935F
   Device version: G935FXXU1DQD2
   Serial number: RF8H21BG0TK
   Vendor extension ID: 0x00000006
   Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0;samsung.com/kies:4.1;samsung.com/devicestatus:3;samsung.com/sidesync3.1;
   Detected object size: 64 bits
   Extensions:
        microsoft.com: 1.0
        microsoft.com/WMPPD: 11.0
        microsoft.com/WMPPD: 10.0
        samsung.com/kies: 4.1
        samsung.com/devicestatus: 3.0
...

That also looks good. This step will trigger popup on the phone, asking for permission to access device storage. You have to allow it in order to access data!

You will also see how system has registered port to which I have attached smartphone. For that here comes handy command: cfgadm. List displayed below has all empty slots excluded (on my PC it gives 40 entries, most of them are not occupied):

cfgadm | grep -v empty
Ap_Id                          Type         Receptacle   Occupant     Condition
sata0/0::dsk/c2t0d0            disk         connected    configured   ok
sata0/1::dsk/c2t1d0            disk         connected    configured   ok
sata0/5::dsk/c2t5d0            cd/dvd       connected    configured   ok
usb2/1                         usb-hub      connected    configured   ok
usb3/3                         usb-kbd      connected    configured   ok
usb3/4                         usb-mouse    connected    configured   ok
usb3/9                         usb-device   connected    configured   ok

I know that I have attached smartphone to USB 3 port (it is colored differently, comparing to USB 2 ones) and when we eliminate keyboard and mouse, we see that smartphone is connected to usb3/9 slot:

cfgadm -v usb3/9
Ap_Id                          Receptacle   Occupant     Condition  Information
When         Type         Busy     Phys_Id
usb3/9                         connected    configured   ok         Mfg: SAMSUNG  Product: SAMSUNG_Android  NConfigs: 2  Config: 0  <no cfg str descr>
unavailable  usb-device   n        /devices/pci@0,0/pci1849,a12f@14:9

It is time to use it:

gmtp
(gmtp:8217): Gtk-WARNING **: Theme parsing error: gtk-widgets.css:3258:1: Junk at end of value
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
libusb_detach_kernel_driver() failed, continuing anyway...: No such device or address

If I try to connect (clicking on button "Connect") tools freezes, but on smartphone screen I get this popup: "Allow access to device data" (or something similar) and then "MTP connection will be established with connected device" DENY/ALLOW. So, obvious choice is ALLOW - so I have touched screen on smartphone right there. Let us go back to tool and try to connect... Voila:

But, I cannot see any content (from any folder listed on picture above). Also tried with gmtp invoke as super user - no change! So tried to change some option tool options (namely "Utilize alternate access method"):

and I have lost connection to device. Let us try to bring it back (-y switch means YES,-c defines command to be executed against device):

$ pfexec cfgadm -y -c unconfigure usb3/9
$ pfexec cfgadm -y -c disconnect usb3/9
$ pfexec cfgadm -y -c configure usb3/9

I have tried to use connect command (man cfgadm says it is possible, but tool refuses it?). Anyway, those operation failed (maybe IF connect has worked?...).

Tried this reduced set, and it has worked! I was able again to connect to smartphone!

$ pfexec cfgadm -y -c disconnect usb3/9
$ pfexec cfgadm -y -c configure usb3/9

But, unfortunately no other actions could not be taken: upload, download, list directory contents, etc

Update: 13.06.2017 - still no change: I can connect to the phone, but it is useless - cannot open anything (sad) There is an alternative (application) for Android users: https://www.airdroid.com/ (works like charm - uses WLAN connection)