ene 04 2012

BlackBerry PlayBook USB Host (conectar pendrive) – How to

Category: BlackBerry,Código,Playbook,pseudo-hacksguillem @ 2:02

Well, I finally found time to write a little howto on using your pendrive with the PlayBook. I’m sorry about the delay on publishing this, but i was out of home for a few days and couldn’t find time to write the howto.

Well, let’s go to the howto. Things you will need:

– BlackBerry PlayBook

– Root access to your PlayBook (thanks to dingleberry :) )

– Female USB A to micro USB cable and a soldering iron OR USB OTG cable (for example this one will work: Micro USB OTG Cable)

– A pendrive

Now i will try to make instructions as short and clear as possible. Just let me know if something is unclear. I would also like to let you know that i have only tested this on a 1.8.xxx PlayBook version, so results on OS2 are unknown (i haven’t got access to a PlayBook with OS2 and i’m not wishing to upgrade mine at the moment). Please keep this in mind when trying to use this method.

First step – The USB OTG Cable

Get a USB OTG cable or just find a Female USB A to micro USB cable, open the micro USB side and solder pins 4 and 5 of the micro USB port together (this is what turns the USB port into host mode). The photo shows the first version i used. Then i decided to get a nice USB OTG angle cable as you can see in the first photo of the post. If you are interested in one of those, just let me know.

Second step – Console commands

When you have your USB OTG cable, you can proceed to run the commands to load the necessary kernel drivers. The nice part is that everything is already on the PlayBook, so you don’t really need to upload anything. The commands you will need to run are the following:

slay RIM_usbmgr-Winchester
slay io-usb
slay devb-umass
sleep 2
RIM_usbmgr-Winchester -m0s
io-usb -domap4430-mg ioport=0x4a0ab000,irq=124
sleep 2
waitfor /dev/io-usb/io-usb 4
devb-umass cam pnp blk automount=+hd6t6:/accounts/1000/shared/usb:dos,automount=+hd6:/accounts/1000/shared/usb:dos

The only line you really need to pay attention to, is the last one. It shows where the pendrive will be automatically mounted after you connect it. You can specify different mount points for different partitions just separating them by comas (in my example command, hd6t6 and hd6 shown)

The other commands just kill the USB server running and start it with the required commands to be able to run the USB port as a host port. There is also a command to load the kernel driver (io-usb domap….).

Last step – Connect your pendrive

If all went well, you should now be able to connect your pendrive and access contents on the mount folder you selected. Please keep also in mind that you must first create this directory for the automount to work. I also noticed that sometimes the kernel modules does produce a bus error and crashes. If that happens, just try to run all the commands again.

I really expect to be able to improve this method or provide a ready app to execute all the process, but at the current time, this has no ETA. If you want, you can follow me on @guillemmateos and i will tweet any finding or progress I make about this.

If you have any suggestions or are able to get different OS versions working with this method I’d be really happy if you could post it here and let me know.

Thanks!

Etiquetas: , , ,

68 Responses to “BlackBerry PlayBook USB Host (conectar pendrive) – How to”

  1. dablessing says:

    Thanks for the write up! I was able to follow the commands, but cannot get the playbook to read my flash drive. I am on OS 2.0. A few things that might be holding this back, and maybe you can help to clarify where you got some of your variables, that way if there is something different in OS 2.0, we can clear that up. I was able to kill the RIM_usbmgr-Winchester and then restart with -m0s for dynamic dual mode. After I followed all of the steps, I didn’t get my flash drive to read, I had it plugged in while the last commande was entered, and the flash drive lit up, but that was it. I went ahead and then unplugged my flash drive, and plugged my playbook back into my computer. The dingle SSH window then showed that the USB driver was started. When I disconnected, the window showed the driver was stopped. Then i plugged my flash drive back in and no response in the Dingle SSH window.

    A step some may or may not get that is a little confusing is that you must create a directory in the accounts/1000/shared directory for your USB. I just typed into Dingle SSH:

    cd /accounts/1000/shared
    mkdir /usb

    That seemed to work.

    My questions that may be able to clear up if any variables are different between OS 1 & OS 2 would be:

    – Sometimes when I command Slay io-usb or devb-umass, i get a file not found error.
    – What does sleep 2 do? Is that just a period for refreshing?
    – the command to load the kernel driver, could those variables possibly be different for OS 2? Can you clarify where the ioport etc comes from?
    – On the waitfor /dev/io-usb/io-usb 4, what does the io-usb 4 mean? When i go into that folder in WinSCP, I only see a io-usb file and not one with a 4 at the end.
    – As for the hard drives to mount, it isn’t necessary to mount different points is it? I think my folder had hd0, hd1, hd2, hd3, hd4t, etc. Do you just pick one at random?
    – When linking the automount to the /usb directory we create, do you need to put the :dos after usb? Since my directory i made was only /accounts/1000/shared/usb, is the :dos necessary?

    Sorry for all of the questions, but I figure (and hope for my own sake) that other are probably running into these problems too. I will be happy to work together with anyone to make sure we get a write up done for os 2.0 if necessary.

    Thank you for all of you work!

  2. dablessing says:

    Ok, to further comment on my last post…

    It seems that maybe OS 2.0 does not have the following scripts and config files listed under the RIM_usbmgr-Winchester help (use RIM_usbmgr-Winchester in DingleSSH):

    – usb_host.sh in directory /scripts/usb_host.sh
    – usbmgr.conf in directory /etc/system/config/usbmgr.conf

    The usb_device.sh script is in the /scripts/usb_devise.sh

    Would this have anything to do with this not working? Also, I didn’t give my /usb folder 777 read/write/execute permission. I intend to try that when I get home.

  3. xSacha says:

    I’m looking at integrating this in to Dingleberry 2.x/3.0.

    Currently I’m in the same position as you dablessing. It isn’t working on 2.0.

    To answer your questions:
    – You get file not found because sometimes those processes aren’t running (when you slay RIM_usbmgr-winchester it will sometimes kill the other two).
    – Sleep 2 delays the script for two seconds to allow the previous commands to run (eg. RIM_usbmgr may need to run its scripts).
    – I only have OS2 so can’t answer this question. It could relate to why it isn’t working though.
    – The 4 refers to how many seconds it ‘waits’ for (notice waitfor?). It waits 4 seconds for that device to be ready. Similar to sleep command.
    – This is confusing as I’m sure it is always mounted on hd2 and yet the author chose hd6.
    – The :dos refers to the filesystem. This would be necessary otherwise it might assume qnx6 filesystem I suppose?

    Also, I am missing these files too but the RIM_usbmgr doesn’t complain so I think those two files aren’t required.

  4. dablessing says:

    As I am messing around with this more, I’m keeping my USB OTG and flash drive plugged in while typing in the commands. As soon as I kill the drivers, and then enter RIM_usbmgr-Winchester -m0s, my playbook screen brightens up, so I know that the driver is then working and recognizing something is attached. Is it possible on the kernel driver, that the driver is typed wrong? I go into /lib/dll/ and i look for the -domap4430-mg and I can’t find that one. I see devu-omap4430-mg, devu-omap4430-musb, and these:

    devu-RIM_aap-omap4430-musbmhdrc.so
    devu-RIM_ecm_mux-omap4430-musbmhdrc.so
    devu-RIM_ecm-omap4430-musbmhdrc.so
    devu-RIM_rndis_mux-omap4430-musbmhdrc.so
    devu-RIM_rndis-omap4430-musbmhdrc.so
    devu-RIM_usbumass-omap4430-musbmhdrc.so

    Also, after I input the commands above exactly as they should be, my flash drive begins to boot up and lights up, but then turns off an nothing. If you command usb in the command prompt, you get a status of what’s connected. Mine shows the below:

    Device Address: 1
    Vendor: 0x13fe (Verbatim)
    Product: 0x3623 (STORE N GO)
    Class: 0x00 (INDEPENDENT PER INTERFACE)

    So it is reading what’s attached to the USB as I do have a Verbatim flash drive attached. However, what is holding it back from booting the flash drive? Am I not mounting it correctly? I typed in devb-umass cam pnp blk automount=+hd2:/accounts/1000/shared/usb:dos

  5. dablessing says:

    GOT IT!!!!

    Here is exactly what I did.

    slay RIM_usbmgr-Winchester
    slay io-usb
    slay devb-umass
    RIM_usbmgr-Winchester -m0s
    io-usb -domap4430-mg ioport=0x4a0ab000,irq=124
    devb-umass cam pnp blk automount=hd7t12:/accounts/1000/shared/usb,automount=hd7:/accounts/1000/shared/usb

    That then flipped the light on my flash drive, then flipped it on again. I went to Air browswer and now can view the files. Here is where you might need to do a little bit more work:

    I think the flash drive might mount in different places for everyone. Before you begin entering commands, type the below in Dingle SSH:

    df

    This should bring up a list of all of your hard disks. Keep note of these and where they are at.

    Then, enter all of the original commands as in this blog post by Guillem. It likely won’t work. Keep your flash drive plugged in. Then type this again:

    df

    Note now that there may a new hard drive. In my example, before I typed in any commands, ‘df’ only had hd0 – hd6. After typing in commands and having my flash drive plugged in, I now had two new entries:

    /dev/hd7 7819392 7819392 0 100% /dev/hd7t12
    /dev/hd7 7827456 7827456 0 100%

    That’s why I mimiced Guillem’s instructions and opted for mounting two partitions. It seemed to work. Let me know if this works for anyone else!

  6. rainnyday92 says:

    Hello everyone, I have a question : Where I can run this code ?

    “slay RIM_usbmgr-Winchester
    slay io-usb
    slay devb-umass
    sleep 2
    RIM_usbmgr-Winchester -m0s
    io-usb -domap4430-mg ioport=0x4a0ab000,irq=124
    sleep 2
    waitfor /dev/io-usb/io-usb 4
    devb-umass cam pnp blk automount=+hd6t6:/accounts/1000/shared/usb:dos,automount=+hd6:/accounts/1000/shared/usb:dos”

    May I’ll run it in Dingle SSH command ?

  7. rainnyday92 says:

    And another question : If I have a USB OTG cable, does i need to open the micro USB side and solder pins 4 and 5 of the micro USB port like “a Female USB A to micro USB cable” ?

  8. guillem says:

    Hi, this is only necessary if its not a OTG cable. If your cable is OTG, it already has pins soldered ;)

  9. guillem says:

    Hi,

    Yes, you should run it under a root console.

    Thanks

  10. guillem says:

    Hi,

    Right dablessing, sorry for not beeing clear enough in the instructions. Probably depending on your PlayBook version, your device will be different. On my version (1.8.4xxx) it always shows as hd6xxx, but it may show as different devices. The hd6txx is just because depending on the partition table and fs it shows that way. I found that some pendrives i have show just as hd6 and others as hd6txx so i opted to automount both options which allows all my pendrives to work.

    The command that is usually problematic is the io-usb line. I found that it crashes pretty often maybe because the driver has some bug, but i can’t tell for sure. I am pretty sure the ioport and irq addresses are right.

    Any more finding i will let you know and hope you also comment if you find anything new :)

  11. guillem says:

    You won’t find that exact name because the io-usb already assumes the devu-RIM_ part.

    Sometimes the driver does not load correctly. Try to run all the commands till the io-usb and if the light turns of, run that command again. That might help.

  12. rainnyday92 says:

    Thanks guillem, and how can i find partitions like : hd6, hd6t6,… on my PlayBook ?

  13. rainnyday92 says:

    But if i can’t find it, at the line automount=…, what i will fill in it ?

  14. guillem says:

    Hi xSacha! Nice to see you here :)

    Thanks for answering those few questions pending. Just commenting on some things:
    – The delays are there mainly because i found that if you just execute all the commands as fast as possible, it gets not enough time to load drivers and all the stuff and it usually does not work if you don’t get those few sleeps here and there. Anyway those were mainly ‘test and error’.
    – Right, hd6 will depend on your PlayBook. I used that because on my PB it always mounts on that directory. This is likely to be different specially on OS2, but as i am still on OS 1.x i can’t test it.
    – Correct about the filesystem. QNX assumes a qnx6 filesystem if you don’t specify the :dos part. Dos allows for fat16 and fat32 partitions. The QNX docs show exactly the valid partition codes so you can be sure your flashdrive will work
    – I’m not sure about the driver part. From the posting of dablessing it looks like the devu-RIM_ecm-omap4430-musbmhdrc.so is the right choice but you will need to test. The addresses will mostly be the same as there is no hardware change.

    Let’s see if we can get this working perfectly and with a nice app or script to run all this commands automatically.

  15. xSacha says:

    For anyone interested: hd711 for OS 2.0.0.4869 and hd712 for OS 2.0.0.6149.
    Not sure if there’s a way to auto-detect this.

    By the way, removing the :dos part still works (on OS 2.0 anyway). Also, you don’t need two automount entries. Just the hd7t11 or hd7t12 one (depending on firmware) works here.

    slay RIM_usbmgr-Winchester
    slay io-usb
    slay -f devb-umass
    RIM_usbmgr-Winchester -m0s
    sleep 2
    io-usb -domap4430-mg ioport=0x4a0ab000,irq=124
    devb-umass cam pnp blk automount=hd7t11:/accounts/1000/shared/usb

  16. dablessing says:

    I have a quick question and need some confirmation. To verify, the only way to do the above is to Dingle SSH via Wifi, correct? Since you need to slay RIM_usbmgr-Winchester in order to restart in -m0s mode? If that is the case, then i’m in trouble as I can’t connect via wifi at the office.

    As a side note, has anyone been needing to restart every so often? I feel like there are likely some bugs in the latest OS 2.0.0.6149 that cause me to restart. This time, my AirBrowswer wouldn’t bring up the list of directories on the left hand side, it was just one giant black screen. Therefore, I had to restart, and lost my host access.

  17. xSacha says:

    dablessing:

    You can also do this via an application or via localhost SSH on the device itself.

    With wifi you can connect via ssh on your phone too.

  18. dablessing says:

    xsacha,you mean you can access the ssh via root on the playbook? I’m looking for a way to hopefully bypass having to type in those commands only over wifi through my home PC DingleSSH client. For example, I had everything working fine today, but my playbook was acting funny in AirBrowswer, so I had to restart, and hence wasn’t able to log back into DingleSSH at work and enter those commands….since I can only connect via USB cable at work (no wifi).

    I was usb host-less today at work and it was a buzzkill!

  19. xSacha says:

    Yeah I have Dingle SSH app for Playbook. I have to ‘modernise’ it to work on latest firmware though.

  20. guillem says:

    Hi! @xsacha is there some ssh client installable on the playbook without using android player?

  21. dablessing says:

    Are you guys finding that your RAM is taking a big hit while running the -m0s stack? I saw that my RAM went from about 483mb to about 160mb when running -m0s. I then ran -m1 and it went down to 33mb and I even got a crash that said low graphics memory.

  22. oddette says:

    @xSacha “You can also do this via an application or via localhost SSH on the device itself.

    With wifi you can connect via ssh on your phone too.” << any refer app on PB or on phone?

  23. tomasso says:

    vaya…. tengo os 2.0.0.4869 y entre los pasos que tienes descritos y la aportacion de ciertas personas, aun no consigo realizar lo. si en algun momento puedes aclarar un poco los pasos a seguir en este os 2.0.0.4869 te lo agradeceria, si es en ingles bien(lo entiendo)

  24. kjlionheart says:

    when i only enter the the 1st command my playbook gets disconnect, i have to reboot it, to reconnect it, then i tried couple of time more, my pc couldnt ditect the playbook i had to restore it, and root it again, can anybody help me with this?

  25. oddette says:

    @kijonheart u need to ssh via wifi or from device it self

  26. tomasso says:

    hi!! i finally did it!!!keep in mind im just a current user, no pc guru…
    os.2.0.04869, a 32GB fat32 usb and OTG USB
    just plug my playbook to mi laptop on usb, run ssh dingleberry, once conected i unplugit, still conected over wifi on ssh dingleberry, do the post nº1 mkdir /usb… then i just left my OTG & USB connected, then use the commands as original, dont worry about erros and stuff just finish it… so you now cant do the “dablessin” 5th post and voila! you now have a usb working!!!
    PD: i tried to use a diferent usb and is not recognised by the file browser i guess you must mount the new USB again…..

  27. dablessing says:

    Tomasso,

    If you are on OS 2.0 which it looks like you are, you’ll mount hd7t11 or hd7t12. Depending on your usb drive you attach, it will be either or. My suggestion is to automount both that way you can plug both in.

    Congrats on figuring it out. May I ask are you having issues where you intially get the usb host to work, and then within a few minutes, if you unplug your drive and then plug it back in, will it not read? We’ve been having some issues with that. My guess is that you can override the autoscript and allow Host mode to work, but as soon as you unplug your host drive, the slave mode kicks back in and hence won’t allow the drive to read anylonger without re-updating the codes above. To summarize that, it sounds like the -m0s mode is not staying in command.

  28. tomasso says:

    hi!thanxs
    so i just tried to plug my usb again after a day, my playbook has been always on an d charging, I try to read my usb and voila! no light blinking so no reading about it……
    so again enter all the commands…perhapps yesterday it was able to read the USB even after been unplugged for a while.. i guess is because was charging over the usb, so still hoping it’ll be soon an app to make it a fast proccedment

  29. dablessing says:

    Tomasso, it appears there is some bug where the QNX OS defaults back to slave mode even after entering the host commands. We’re looking into how we fix this, but as of right now, we haven’t narrowed it down.

    I’d suggest checking out crackberry. A very nice user has given instructions on how to creat a script that will allow for just one command to be entered into the SSH. I’d check that out. It makes it very easy. I’m just still having problems where after about 10 minutes, my playbook can’t read the usb any longer.

  30. LAM says:

    hi, i just successfully rooted my dad’s playbook, im trying to do all these steps to be able to connect usb and open files, i finally learned how to ssh via wifi, but typing in all those commands doesnt do anything, after i click enter another # appears and nothing.. then after a few minutes, this error message appeared, ” xpt_configure:umass SIM attach failure”

    i’ve playbook 2.0.0.4869.

    on Second step – Console commands, can you guys futher break down the steps? i might be missing out some steps. can anyone please explain it in a simpler way (step by step pleeaaase).

    thank you..

  31. DerekS says:

    Thanks for the how to. Works great!

  32. guillem says:

    @DerekS happy to know that ;)

  33. veronica says:

    The first message I get is “Jailbreak failed”, and the first command slay RIM_usbmgr-Winchester
    is not recognised. What have I missed? (OS 1.8xx)

  34. David Boring says:

    There’s also this less expensive OTG cable:
    http://www.amazon.com/gp/product/B005FUNYSA/ref=oh_o02_s00_i00_details

    If you do any writing to the drive, won’t you want to do a sync or umount before pulling it?

  35. Trent Folk says:

    Hi

    Would it be possible to create and app that would enable USB support?

  36. Jonathan says:

    Sorry if this is a dumb question, but which pins are 4 and 5? Thanks in advance.

  37. Jack says:

    please tell me, after this manipulation of the tablet, it is behaving normally? No issues ranged does not happen? and sorry for my English .. the curve – I write a Google translator))

  38. mp says:

    Can you plug in the Magic Jack device into this pendrive adapter?

  39. Nando says:

    I m so sorry! i m not really specialist on this, so someone can explane how to have root acess?

  40. Dora says:

    Hola Guillem! Ya tengo el usb( nos é si compré eñ correcto) pero nada funciona. Cómo tengo acceso al root de mi playbook? Si nos puedes explicar un poco + elemental o sencillo para los que no somos expertos en la materia?
    Gracias d antemano: @dorita0415

  41. guillem says:

    you need to use dingleberry to do so. Please do a search on dingleberry playbook on google to find about it (sorry, haven’t got time lately to work on a more detailed tutorial)

  42. guillem says:

    sorry… don’t know what a magic jack device is :S
    i don’t think it will work with anything that is not a keyboard, a mouse, a ethernet usb adapter or a pendrive/harddrive.

  43. guillem says:

    i didn’t have any issues. Anyway, if you have any kind of problem, just reboot the playbook and it will be back to its ‘normal’ state.

  44. guillem says:

    not if you haven’t got the playbook dingleberried. Maybe with a dingleberried playbook there is a chance to do it, but it won’t be a ‘normal’ app world app…

  45. guillem says:

    You may want to do a sync or unmount before pulling it, i guess.

  46. guillem says:

    is this a message from the jailbreak process or are you already inside the playbook via ssh?

  47. guillem says:

    Hi. That should work, or maybe this one which is cheaper: Micro USB OTG Cable

  48. scala says:

    Hi everybody. I have 2.0.1.358 in my PlayBook.

    I connected DingleBerry and all good.
    But when I made Install/SSH, the script “toggle_usb_host.script” said “You are not root. Script Faild”.

    If I make Dingle SSH, show me a message “JailBrear Faild”

    What can I do?

  49. Calvin says:

    Could you please make a slightly more detailed tutorial than this?? Really love this feature, but have no idea about console commands, et cetra. PLEASE help or email me at calvinw1000@gmail.com

Leave a Reply