Drobopro compatibility

272 views
Skip to first unread message

lemonizer

unread,
May 13, 2009, 5:58:43 PM5/13/09
to drobo-talk
Is Drobo-utils compatible with the recently released Drobopro? From
the project page it seems like it's supposed to work with all models
but it doesn't seem to ever recognize the drobo being connected.

Peter Silva

unread,
May 13, 2009, 7:23:23 PM5/13/09
to drobo...@googlegroups.com
Wow! I was looking forward to someone with a Pro showing up. Exciting!

short version: it might work...

drobo-utils depends on the linux generic scsi layer.  I suspect that there is
just a basic ethernet connection now, and you a few additional driver layers
set up before it will work.   You need to configure the iscsi driver to recognize the device.   I have no idea how to do that, so I googled...

This looks like it might be helpful:

http://www.cyberciti.biz/tips/howto-setup-linux-iscsi-target-sanwith-tgt.html

once you get a log message like [sdz] attached... or something
you have a generic scsi level device.  Then you can try firing up drobo-utils, and it stands a good chance of working.

Really curious to hear how it goes!

Andrew Grover

unread,
May 13, 2009, 7:50:17 PM5/13/09
to drobo...@googlegroups.com
On Wed, May 13, 2009 at 4:23 PM, Peter Silva <infor...@gmail.com> wrote:
> Wow! I was looking forward to someone with a Pro showing up. Exciting!
>
> short version: it might work...

I recall seeing a spot in the drobo detection code where it checks
that there are 4 drive bays. That may not be the *only* spot that
needs to be updated, but it's certainly one spot :)

> drobo-utils depends on the linux generic scsi layer.  I suspect that there
> is
> just a basic ethernet connection now, and you a few additional driver layers
> set up before it will work.   You need to configure the iscsi driver to
> recognize the device.   I have no idea how to do that, so I googled...

Looks like it can also hookup USB or 1394, might give those a try too.

Regards -- Andy

Peter Silva

unread,
May 13, 2009, 8:57:22 PM5/13/09
to drobo...@googlegroups.com
egads, you´re right...  The detection insisted on 4 slots/drobo.  I submitted a patch to want >= 4  so DroboPro users will have to work with trunk release, or just comment out the check in Drobo.py

With that one piece of autodetection fixed, the CLI should be fine.

The GUI is likely badly busted by this, though...  All the slot stuff is built by hand.  ugh... that will be some work.

lemonizer

unread,
May 13, 2009, 9:17:40 PM5/13/09
to drobo-talk
Thanks for the replies guys, it has certainly pointed me to the right
direction. I'll be testing that out tonight and I'll let you know how
it goes.

On May 13, 5:57 pm, Peter Silva <informa...@gmail.com> wrote:
> egads, you´re right...  The detection insisted on 4 slots/drobo.  I
> submitted a patch to want >= 4  so DroboPro users will have to work with
> trunk release, or just comment out the check in Drobo.py
>
> With that one piece of autodetection fixed, the CLI should be fine.
>
> The GUI is likely badly busted by this, though...  All the slot stuff is
> built by hand.  ugh... that will be some work.
>
> On Wed, May 13, 2009 at 7:50 PM, Andrew Grover <andy.gro...@gmail.com>wrote:

Peter Silva

unread,
May 13, 2009, 9:35:01 PM5/13/09
to drobo...@googlegroups.com
oh, no... Andrew is very right... drobo-utils really looks hard for four slots...
If you try it now, it will only show info for top 4 slots... ok, something to do I guess.

Peter Silva

unread,
May 13, 2009, 10:56:58 PM5/13/09
to drobo...@googlegroups.com
ok just committed another patch that should fix the API and CLI
to report the correct number of slots. 

GUI is more work...

lemonizer

unread,
May 16, 2009, 1:25:22 AM5/16/09
to drobo-talk
Hi All,

Update (and hopefully future reference for others):

I had to manually configure the ip of the dbpro from the Drobo
Dashboard on my macbook to do this as I'm not sure how to get the
portal ip for iscsiadm. In my case it was 192.168.2.80 port 3260 and
I'll use that ip in the example below

1. Configure iscsi ip address via drobo dashboard on win/osx
2. Install open-iscsi (http://www.open-iscsi.org/): sudo apt-get
install open-iscsi
3. Connect the dbpro to host machine via iscsi
4. Query dbpro's id: sudo iscsiadm --mode discovery --type sendtargets
--portal 192.168.2.80
5. Copy the id string returned by iscsiadm, something like "iqn.
2005-06.com.datarobotics:drobopro.tdb091840080.node0"
6. Connect to the dbpro: sudo iscsiadm --mode node --targetname iqn.
2005-06.com.datarobotics:drobopro.tdb091840080.node0 --portal
192.168.2.80:3260 --login

If everything went well, your dbpro should show up under /dev. Also
check /var/log/messages to confirm that the iscsi device connected
successfully.

Unfortunately I still cannot get drobo-utils to recognize the dbpro
once connected. Here's what I did and please let me know if I did
something wrong:

1. mkdir ~/drobo
2. cd ~/drobo
3. svn co https://drobo-utils.svn.sourceforge.net/svnroot/drobo-utils
drobo-utils
4. cd to the trunk dir with all the scripts
5. sudo python setup.py build
6. sudo python setup.py install

Issuing sudo drobom status returns a "No Drobos discovered". I noticed
this is a different message than last time I tried, which was before
the 4+ bay patch that you added. Any tips? I'm currently
repartitioning my drives to ext3 via gparted (taking foreeeeeever) but
let me know if you'd like me to test something out on my end once
that's done.

Thanks!!!

Peter Silva

unread,
May 16, 2009, 11:12:45 AM5/16/09
to drobo...@googlegroups.com
Great stuff!

mkext2fs taking forever is absolutely normal, unfortunately.
ext3 takes about a minute per 100 G's in my experience, ymmv.
btrfs would be a great thing... sigh...

for the bad detection.  there is a -v switch to turn on various debug
possibilities.  to narrow things down, try turning on device detection debug messages via -v 16...


example:
root@alu:/etc/lirc# drobom -v 16 status
examining:  /dev/sda
rejected: not from DRI
examining:  /dev/sdb
rejected: not from DRI
examining:  /dev/sdc
found a Drobo
appending new lundevs to devices: []
returning list:  [['/dev/sdc']]
trying:  ['/dev/sdc']
cfg:  (4, 16, 2199023185408L)
settings:  (1242486488, 8, 'AluMyth')
found  [['/dev/sdc']]
cfg:  (4, 16, 2199023185408L)
settings:  (1242486488, 8, 'AluMyth')
/dev/sdc /drobo10 AluMyth 54% full - ([], 0)
root@alu:/etc/lirc#

Will be easier to narrow down after similar output from your end.

Peter Silva

unread,
May 16, 2009, 11:15:54 AM5/16/09
to drobo...@googlegroups.com
also, make sure you remove the dpkg drobo-utils  (dpkg --remove drobo-utils)

you might still be getting the package one, instead of the patched one.

Peter Silva

unread,
May 16, 2009, 11:35:20 AM5/16/09
to drobo...@googlegroups.com
Also, as Andrew mentioned, you can always try connecting via usb or firewire just to see that the detection of the pro works OK, and once that is working, return to iSCSI link...

lemonizer

unread,
May 16, 2009, 12:00:58 PM5/16/09
to drobo-talk
Alright, just tried that out... here's the output:

alvin@servoh:~$ sudo drobom -v 16 status
examining: /dev/sda
rejected: not from DRI
examining: /dev/sdb
rejected: not from DRI
examining: /dev/sdc
rejected: not from DRI
examining: /dev/sdd
rejected: not from DRI
returning list: []
No Drobos discovered
alvin@servoh:~$

It's currently connected and mounted on ext3 via USB2 as 3 2 TiB
partitions (sdb1, sdc1, sdd1), no firewire port on this motherboard
unfortunately. This is also a fresh Ubuntu install so I didn't have
the dpkg install on it. I'll try looking over the code later today to
see if I can spot anything but I have a feeling this is caused by the
different firmware of the dbpro. Let me know if you'd like me to try
something else!

On May 16, 8:35 am, Peter Silva <informa...@gmail.com> wrote:
> Also, as Andrew mentioned, you can always try connecting via usb or firewire
> just to see that the detection of the pro works OK, and once that is
> working, return to iSCSI link...
>
> On Sat, May 16, 2009 at 11:15 AM, Peter Silva <informa...@gmail.com> wrote:
> > also, make sure you remove the dpkg drobo-utils  (dpkg --remove
> > drobo-utils)
>
> > you might still be getting the package one, instead of the patched one.
>
> >>> drobo-utils<https://drobo-utils.svn.sourceforge.net/svnroot/drobo-utils%0Adrobo-u...>

lemonizer

unread,
May 16, 2009, 12:19:50 PM5/16/09
to drobo-talk
Ok, I think I found the cause and I managed to get it working. I'm not
too familiar with the whole structure of the app and I also haven't
touched python ever so this might not be the best way.

I found the file containing the "not from DRI" string: DroboIOctl.py
and noticed you're comparing id[4].startswith("TRUSTED") to check if
the drive is a drobo. I added a print statement to check what id[4]
really is, did a setup.py build and install. Turns out it's printout
out DROBO now...

thisdev="%02d%02d%02d" % (id[0], id[1], id[2])
print id[4]
print "HELLO"
if id[4].startswith("TRUSTED"): ...

output:

alvin@servoh:~/drobo-utils/drobo-utils/trunk$ sudo drobom -v 16 status
examining: /dev/sda
ATA ST3320620AS 3.AA
HELLO
rejected: not from DRI
examining: /dev/sdb
DROBO DroboPro 1.00
HELLO
rejected: not from DRI
examining: /dev/sdc
DROBO DroboPro 1.00
HELLO
rejected: not from DRI
examining: /dev/sdd
DROBO DroboPro 1.00
HELLO
rejected: not from DRI
returning list: []
No Drobos discovered
alvin@servoh:~/drobo-utils/drobo-utils/trunk$

So I changed the if statement to if (id[4].startswith("TRUSTED") or id
[4].startswith("DROBO")): # you have a Drobo!

output:

alvin@servoh:~/drobo-utils/drobo-utils/trunk$ sudo drobom -v 16 status
examining: /dev/sda
rejected: not from DRI
examining: /dev/sdb
found a Drobo
appending new lundevs to devices: []
examining: /dev/sdc
found a Drobo
appending to lundevs...
examining: /dev/sdd
found a Drobo
appending to lundevs...
returning list: [['/dev/sdb', '/dev/sdc', '/dev/sdd']]
trying: ['/dev/sdb', '/dev/sdc', '/dev/sdd']
cfg: (8, 16, 36893490346442288640L)
settings: (1242465507, 8, 'Drobo')
found [['/dev/sdb', '/dev/sdc', '/dev/sdd']]
cfg: (8, 16, 36893490346442288640L)
settings: (1242465507, 8, 'Drobo')
/dev/sdb:/dev/sdc:/dev/sdd /home/alvin/drobo/drobo1:/home/alvin/drobo/
drobo2:/home/alvin/drobo/drobo3 Drobo 02% full - ([], 0)

I also tested "Blink" and it seems to be working :)

Peter Silva

unread,
May 16, 2009, 3:39:04 PM5/16/09
to drobo...@googlegroups.com
Great!  I add an 'or' to the code in svn, so it should work without a mod. now.
Also added some debug code under control of the detection switch.

Peter Silva

unread,
May 17, 2009, 11:57:49 PM5/17/09
to drobo...@googlegroups.com
Just committed DroboPro GUI support to svn.  Fire it up and see how it goes.

lemonizer

unread,
May 22, 2009, 1:18:29 PM5/22/09
to drobo-talk
Peter, sorry for the delay...

I'll check it out tonight and let you know.

On May 17, 8:57 pm, Peter Silva <informa...@gmail.com> wrote:
> Just committed DroboPro GUI support to svn.  Fire it up and see how it goes.
>
> >> > > >>> 2. Install open-iscsi (http://www.open-iscsi.org/):sudoapt-get<http://www.open-iscsi.org/%29:sudoapt-get>
> ...
>
> read more »

Stewart Murrie

unread,
May 23, 2009, 3:37:51 AM5/23/09
to drobo...@googlegroups.com
Excellent work Peter, thanks!

Here's my experience so far, running on Ubuntu 9.04 on a 3GHz Core 2 Duo E8500, 4GB RAM with a Asus P5Q-E (dual-LAN) motherboard.

I connected the DroboPro via USB and downloaded the latest .deb from SF and installed it.  Although the deb installed fine I wasn't able to use the UI until I also installed qt.  Maybe this should be added as a dependency to the deb?  Once I qt was installed, the UI launched fine as root.

I was able to resize and format the partition as ext3 fine, too.  Took a long time, of course, but it worked ok.  I also played around with some buttons in the UI.  Everything seemed to work as expected, although when I later checked the console I saw this error repeated a bunch of times:

Traceback (most recent call last):
  File "/var/lib/python-support/python2.6/DroboGUI.py", line 240, in __updateStatus
    self.__updateLEDs() # only update display...
  File "/var/lib/python-support/python2.6/DroboGUI.py", line 162, in __updateLEDs
    while ( i < self.drobo.SlotCount() ):
  File "/var/lib/python-support/python2.6/Drobo.py", line 549, in SlotCount
    self.GetSubPageConfig()
  File "/var/lib/python-support/python2.6/Drobo.py", line 1003, in GetSubPageConfig
    result=self.__getsubpage( 0x01, 'BBBQ'  )
  File "/var/lib/python-support/python2.6/Drobo.py", line 449, in __getsubpage
    raise DroboException("cmdout is unexpected length")
Drobo.DroboExceptionProblem accessing a Drobo: cmdout is unexpected length

Unfortunately, I wasn't paying attention to the console as I was messing around in the UI, so I don't know exactly what caused this.  It might've been when I was changing the LUN size.

I then started doing some simple copy tests and timing the results.

Using a single 6.5GB file, over USB, I sustained a consistently average read & write transfer rate of 27MB/s (217Mb/s).

I then downloaded open-scsi and followed the directions here:

http://www.cyberciti.biz/faq/howto-setup-debian-ubuntu-linux-iscsi-initiator/

I had to connect the DroboPro to a Mac in order to set the iSCSI target address manually.

After setting this up, I was able to mount the DroboPro as normal, but droboview complained that it couldn't find the unit.  I did note that using USB, the DroboPro showed up under /dev/sdc, but using iSCSI it came up under /dev/sdb.  I don't know if that's significant or not.  The output from lshw shows the following for the iSCSI connection:

     *-scsi
          physical id: 2
          logical name: scsi10
        *-disk
             description: SCSI Disk
             product: DroboPro
             vendor: DROBO
             physical id: 0.0.0
             bus info: scsi@10:0.0.0
             logical name: /dev/sdb
             version: 1.00
             serial: [redacted]
             size: 8TiB (8796GB)
             capabilities: gpt-1.00 partitioned partitioned:gpt
             configuration: ansiversion=5 guid=166695de-9ddc-4ec2-a28c-cb639215ed88
           *-volume
                description: Data partition
                physical id: 1
                bus info: scsi@10:0.0.0,1
                logical name: /dev/sdb1
                logical name: /media/drobo
                serial: 653459b9-58a7-4625-b3b5-56ab1832b741
                capacity: 8191GiB
                configuration: mount.fstype=ext3 mount.options=rw,errors=continue,data=ordered name=ext2 state=mounted
 
Running drobom -v 63 status gave the following:

examining:  /dev/sda
id:  (0, 0, 0, 0, 'ATA     Maxtor 6Y250M0  YAR5\x00\x00\x00\x00')
rejected: vendor is ATA     Maxtor 6Y250M0  YAR5 (not from DRI)
examining:  /dev/sdb
rejected: failed to identify LUN

returning list:  []
No Drobos discovered

Unfortunately, I wasn't able to actually read or write to the DroboPro at this point.  It would go in a strange disconnect-connect loop.

If I make any more progress I'll report back.

Thanks for everyone's hard work on this!

S~

Peter Silva

unread,
May 23, 2009, 8:14:22 AM5/23/09
to drobo...@googlegroups.com
great stuff!

27 MB/s over USB!  Cool! 


iSCSI detection... I thought that was working... oh well... If someone wants to sent me a PRO, I'll fix it ;-) try installing sg3-utils, and then do a sg_scan, and let me see the result.  Here's one from a machine with a V1 USB drobo...

root@pepino:~# sg_scan -i /dev/sd*        
/dev/sda: scsi0 channel=0 id=0 lun=0 [em] 
    ATA       ST3320820AS       3.AH [rmb=0 cmdq=0 pqual=0 pdev=0x0]
/dev/sda1: scsi0 channel=0 id=0 lun=0 [em]                          
    ATA       ST3320820AS       3.AH [rmb=0 cmdq=0 pqual=0 pdev=0x0]
  ... blah, blah, bla ...

    TRUSTED   Mass Storage      1.00 [rmb=0 cmdq=0 pqual=0 pdev=0x0]
/dev/sdf1: scsi12 channel=0 id=0 lun=0 [em]
    TRUSTED   Mass Storage      1.00 [rmb=0 cmdq=0 pqual=0 pdev=0x0]
root@pepino:~#

My V1 says TRUSTED, but your PRO should say DROBO.


p.s. for the error messages... When you change LUNSIZE, the drobo has to reboot, which means the /dev/sd? disappears completely. The GUI, which constantly polls, gets very confused at that point.  It's best to restart it.
I'll put that in the TODO list.

Stewart Murrie

unread,
May 23, 2009, 2:34:10 PM5/23/09
to drobo...@googlegroups.com
On Sat, May 23, 2009 at 5:14 AM, Peter Silva <infor...@gmail.com> wrote:
 
iSCSI detection... I thought that was working... oh well... If someone wants to sent me a PRO, I'll fix it ;-) try installing sg3-utils, and then do a sg_scan, and let me see the result.  Here's one from a machine with a V1 USB drobo...

root@pepino:~# sg_scan -i /dev/sd*        
/dev/sda: scsi0 channel=0 id=0 lun=0 [em] 
    ATA       ST3320820AS       3.AH [rmb=0 cmdq=0 pqual=0 pdev=0x0]
/dev/sda1: scsi0 channel=0 id=0 lun=0 [em]                          
    ATA       ST3320820AS       3.AH [rmb=0 cmdq=0 pqual=0 pdev=0x0]
  ... blah, blah, bla ...

    TRUSTED   Mass Storage      1.00 [rmb=0 cmdq=0 pqual=0 pdev=0x0]
/dev/sdf1: scsi12 channel=0 id=0 lun=0 [em]
    TRUSTED   Mass Storage      1.00 [rmb=0 cmdq=0 pqual=0 pdev=0x0]
root@pepino:~#

My V1 says TRUSTED, but your PRO should say DROBO.

Yup, this is what the DPro says:
stewm@drobocop:~$ sudo sg_scan -i /dev/sdb*
/dev/sdb: scsi6 channel=0 id=0 lun=0 [em]
    DROBO     DroboPro          1.00 [rmb=0 cmdq=1 pqual=0 pdev=0x0]
/dev/sdb1: scsi6 channel=0 id=0 lun=0 [em]
    DROBO     DroboPro          1.00 [rmb=0 cmdq=1 pqual=0 pdev=0x0]

bm~


Peter Silva

unread,
May 23, 2009, 6:54:38 PM5/23/09
to drobo...@googlegroups.com
I just want to be sure I understand...
when it was plugged in USB, you fired up the GUI
and saw all eight disk drive slots, correct?

go into DroboIOctl.py around line 306, it looks like this:

          try:
            id = pdio.identifyLUN()
          except:
            if debugflags & Drobo.DBG_Detection:
                   print "rejected: failed to identify LUN"
            pdio.closefd()
            continue

Change the try: to ...
           if 1:
and the except: to:
           else:
and it should give a more info when it fails.

Stewart Murrie

unread,
May 23, 2009, 8:21:25 PM5/23/09
to drobo...@googlegroups.com
On Sat, May 23, 2009 at 3:54 PM, Peter Silva <infor...@gmail.com> wrote:
I just want to be sure I understand...
when it was plugged in USB, you fired up the GUI
and saw all eight disk drive slots, correct?

go into DroboIOctl.py around line 306, it looks like this:

          try:
            id = pdio.identifyLUN()
          except:
            if debugflags & Drobo.DBG_Detection:
                   print "rejected: failed to identify LUN"
            pdio.closefd()
            continue

Change the try: to ...
           if 1:
and the except: to:
           else:
and it should give a more info when it fails.


Confirmed.  Using USB, everything works fine.  All 8 slots show up etc.

I just tested FW800, and that worked too (at least as far as drobo-utils is concerned: the UI shows up with the 8 drives, and I can make the lights blink, but for some reason Ubuntu refuses to mount it, complaining that it isn't a block device).

Making the changes you suggest yields the following:

examining:  /dev/sda
id:  (2, 0, 0, 0, 'ATA     Maxtor 6Y080M0  YAR5\x00\x00\x00\x00')
rejected: vendor is ATA     Maxtor 6Y080M0  YAR5 (not from DRI)
examining:  /dev/sdc

Traceback (most recent call last):
  File "/usr/local/bin/drobom", line 214, in <module>
    l = Drobo.DiscoverLUNs(debug)
  File "/usr/local/lib/python2.6/dist-packages/Drobo.py", line 1309, in DiscoverLUNs
    for potential in DroboIOctl.drobolunlist(DEBUG):
  File "/usr/local/lib/python2.6/dist-packages/DroboIOctl.py", line 306, in drobolunlist
    id = pdio.identifyLUN()
  File "/usr/local/lib/python2.6/dist-packages/DroboIOctl.py", line 136, in identifyLUN
    (dunno1,vendor,dunno2) = struct.unpack(fmt,hoho)
struct.error: unpack requires a string argument of length 88

bm~


Peter Silva

unread,
May 23, 2009, 10:27:47 PM5/23/09
to drobo...@googlegroups.com
ok...try again with -v 63

I want to see how long the string actually is...

S. Murrie

unread,
May 23, 2009, 10:30:50 PM5/23/09
to drobo...@googlegroups.com, drobo...@googlegroups.com
That was with -v 63

Sent from my iPhone

Peter Silva

unread,
May 23, 2009, 10:41:03 PM5/23/09
to drobo...@googlegroups.com
ok, on line 135, there  get_sub_page(.... 4)
replace the 4 with 4,63)

Peter Silva

unread,
May 23, 2009, 11:09:46 PM5/23/09
to drobo...@googlegroups.com
thatwas wrong, just change the 4 to 63...

Sloan

unread,
Jun 2, 2009, 9:46:43 AM6/2/09
to drobo-talk
So I'm having this problem exactly running ubuntu LTS. I first hooked
my drobopro up to a RHEL 5.2 machine via iSCSI. Unfortunately there
is a bug in rhel that causes open iscsi to think that it has lost
connection with the LUN. So I'm trying ubuntu now, and I'm having the
exact problem as described above. I've tried editing the
DroboIOctl.py as described, but I'm still getting the error:

drobom -v 63 -d /dev/sdc info
examining: /dev/sda
id: (2, 0, 0, 0, 'ATA FB160C4081 n/a \x00\x00\x00\x00')
rejected: vendor is ATA FB160C4081 n/a (not from DRI)
examining: /dev/sdb
id: (3, 0, 0, 0, 'ATA WDC WD1600JS-70S20.0\x00\x00\x00\x00')
rejected: vendor is ATA WDC WD1600JS-70S20.0 (not from DRI)
examining: /dev/sdc
Traceback (most recent call last):
File "/usr/sbin/drobom", line 214, in <module>
l = Drobo.DiscoverLUNs(debug)
File "/var/lib/python-support/python2.5/Drobo.py", line 1309, in
DiscoverLUNs
for potential in DroboIOctl.drobolunlist(DEBUG):
File "/var/lib/python-support/python2.5/DroboIOctl.py", line 306, in
drobolunlist
id = pdio.identifyLUN()
File "/var/lib/python-support/python2.5/DroboIOctl.py", line 136, in
identifyLUN
(dunno1,vendor,dunno2) = struct.unpack(fmt,hoho)
File "/usr/lib/python2.5/struct.py", line 87, in unpack
return o.unpack(s)
struct.error: unpack requires a string argument of length 88


Any help is greatly appreciated.

Thanks.

Peter Silva

unread,
Jun 2, 2009, 10:55:14 PM6/2/09
to drobo...@googlegroups.com
get a copy from  subversion.
repeat drobom -v 63 -d /dev/sdc info

it should give you more output ...
need to see it
Reply all
Reply to author
Forward
0 new messages