Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Any chance of adding support for Drobo 8D? #7

Open
smdwireless opened this issue Jan 29, 2022 · 16 comments
Open

Any chance of adding support for Drobo 8D? #7

smdwireless opened this issue Jan 29, 2022 · 16 comments

Comments

@smdwireless
Copy link

smdwireless commented Jan 29, 2022

I spoke to Drobo tech support and specifically asked if the Drobo 8D which is built only to work with MacOS could work with linux if it was reformatted in ext3. I was told, yes, it would work under linux in that case but would not be supported under the warranty.

I said fine and bought myself one, then ordered 3 18TB Enterprise drives and a 512GB SSD for cache support to fill it and hooked it up to my linux box.

...and big surprise, I got nothing!

Linux detects it as three thunderbolt bridges on the pci bus and a SCSI storage controller according to the lspci command:

XX:XX.X PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
XX:XX.X PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
XX:XX.X PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
XX:XX.X SCSI storage controller: Device 4452:3844 (rev 08)

I have installed Docker OS-X and with some trial and error, managed to pass the TB controller and scsi storage controller over to the virtualized MacOS and from there I installed the Drobo dashboard and was able to see the 8D, which I then set up with dual disk redundancy and formatted as a 128TB HFS+ Volume.

Back to linux after that and still nothing.

I have plugged in another Thunderbolt drive to the pass-through port on the back of the 8D, that device showed up instantly and auto mounted in linux.

Back to the virtualized MacOS where I managed to delete the Mac GUID partitions using e2fsprogs and create a 4TB ext3 partition on the drobo. I came back to linux and still, zilch! ...nothing but the list of devices including the SCSI storage controller as before.

So what I am trying to figure out is what is the special sauce/alchemy that Drobo has done with this device that makes it visible only to MacOS and how can we replicate it under linux?

@petersilva any interest in investigating this one?

Running Debian Bullseye with kernel 5.16.0-rc8-amd64
Intel Core i71195G7 with 16GB RAM and an 8TB local NVME SSD

Drobo 8D
Firmware: 4.2.3 [12.14.116068]
Active Interface: Thunderbolt

Dashboard version: 3.6.1 [115880](on MacOS Monterey - Docker OS-X )

@petersilva
Copy link
Owner

The drobo-utils stuff is about doing special queries, over a USB bus, to talk to the Drobo controller for management functions: setup, parity, and the like. It is not involved in normal disk access. To make devices visible, a USB connected Drobo, just shows up as usb mounted drives, similar for the ISCSI products... You need to figure out how to connect linux to a drive mounted on thunderbolt. I know nothing about thunderbolt, so I started googling "linux thunderbolt drive", and these were some promising results:

It looks like the reason no drives show up, is that you need to "Authorize" it somehow... look in the links for a couple of different methods to do that. The links are a bit confused, because if you go back to 2017 support was not quite there yet, but if you confine your search to the last year or two, you should get easier recipes because it is better integrated now.

If you get it working, I will gladly add a FAQ section on Thunderbolt access for the ones who come later. Good Luck!

@smdwireless
Copy link
Author

smdwireless commented Jan 30, 2022

Hi @petersilva thanks for coming back on this.

I have already disabled Thunderbolt security in the bios. The issue here doesn't seem to be related to Thunderbolt Authorization either since the output of tbtadm topology shows not only a security level of 0 (none) but a fully authorized Drobo 8D:
# tbtadm topology
Controller 0
│ ├─ Details:
│ │ ├─ Name: Unknown device, Unknown vendor
│ │ └─ Security level: SL0 (none)
│ │
│ └─ PowerExpand Elite 12-in-1 Thunderbolt 4 Dock, ANKER
│ ├─ Details:
│ │ ├─ Route-string: 0-1
│ │ ├─ Authorized: Yes
│ │ ├─ In ACL: No
│ │ └─ UUID: 00b750f9-d4c2-8780-ffff-ffffffffffff
│ │
│ └─ 8D, Drobo
│ └─ Details:
│ ├─ Route-string: 0-301
│ ├─ Authorized: Yes
│ ├─ In ACL: No
│ └─ UUID: 00258119-3724-1c00-ffff-ffffffffffff
Controller 1
└─ Details:
├─ Name: Unknown device, Unknown vendor
└─ Security level: SL0 (none)

Additionally, if I attach another thunderbolt HDD to the same port instead of the Drobo, that drive shows up immediately.

In fact, as mentioned above, if I attach another thunderbolt HDD to the Drobo's own pass-through ports, it shows up immediately in linux, while the drobo's own drives are nowhere to be found... despite showing up just fine in virtualized MacOS on top of the very same linux where they cannot be seen.

I believe this issue has nothing to do with thunderbolt itself which as you have stated, works just fine with modern linux kernels and distros. This issue seems to be the Drobo itself which may be getting a special 'wake up' command or something under MacOS via the installed Drobo dashboard and utilities.

If I connect the same drobo over USB the device shows on the USB Bus:

Bus 003 Device 014: ID 19b9:3844 Data Robotics 8D

but does not show up as a storage device or volume. Running lsblk does not reveal any devices other than the drives already attached.

dmesg output shows:

usb 3-4: new low-speed USB device number 12 using xhci_hcd
usb 3-4: No LPM exit latency info found, disabling LPM.
usb 3-4: New USB device found, idVendor=19b9, idProduct=3844, bcdDevice= 4.51
usb 3-4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb 3-4: Product: 8D
usb 3-4: Manufacturer: Drobo
usb 3-4: SerialNumber: C***************...

Unsurprisingly running drobo utils does not detect the presence of a drobo:

# drobom status
No Drobos discovered <--- no surprises there

Have you come across any such special modes before with Drobo devices where they needed to be initialized first by the drobo software/services in order to show up as a mass-storage device?

@petersilva
Copy link
Owner

Have you come across any such special modes before with Drobo devices where they needed to be initialized
first by the drobo software/services in order to show up as a mass-storage device?

nope. sorry... making devices available in all other cases has always been automatic. /dev/sdX just show up once the devices are found (on usb, on iSCSI.)

things you can try... when connected on USB, try:

drobom -v 127 status

It might give a hint of what it sees. Also... 128 TiB ... might be a problem... you might want to start testing with smaller Luns... try a a 2 TiB lun just to start with... I think you should be OK going to 16... would have to test each power of two to find if there is a Maximum somewhere. The goal for now is to see a block device show up.

@smdwireless
Copy link
Author

After running your suggested command:

# drobom -v 127 status

examining: /dev/sda
rejected: failed to construct LUN pdio
returning list: []
No Drobos discovered

I will try to set the LUN size to 2TB and then see what happens

@petersilva
Copy link
Owner

dumb question... what device is /dev/sda ?

@smdwireless
Copy link
Author

dumb question... what device is /dev/sda ?

oh, just a card reader, no card inserted... so effectively no drobo detected.

@petersilva
Copy link
Owner

Are you sure about that? my card reader does not show up as an /dev/sd? anything unless there is a card in there... what does lsblk say?

@smdwireless
Copy link
Author

It's a card reader on an external Thunderbolt dock so it's a bit weird.

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 7.3T 0 disk
├─nvme0n1p1 259:1 0 37M 0 part /boot/efi
├─nvme0n1p2 259:2 0 14.9G 0 part /
├─nvme0n1p3 259:3 0 29.8G 0 part [SWAP]
├─nvme0n1p4 259:4 0 41.9G 0 part /usr
├─nvme0n1p5 259:5 0 27.9G 0 part /var
├─nvme0n1p6 259:6 0 500G 0 part /home
└─nvme0n1p7 259:7 0 6.7T 0 part /media/StoragePool

It's not here, neither are the drobo's volumes despite making a 2TB LUN.

@smdwireless
Copy link
Author

smdwireless commented Feb 1, 2022

...one other thing to note,
unlike other Drobo devices which show up as mass-storage devices even on MacOS, the 8D doesn't show up unless you install the drobo dashboard which includes a special service that is created for the unit, calling com.drobo.SCSI.ThunderBoltController, com.drobo (or some such, I only saw it in the logs once and would have to look again for the correct names).

This confirms what I suspected that there must be some proprietary call sent to the drobo's SCSI controller to have the drives show up as available.

What I would need to figure out is how to replicate that call under linux, assuming that the drives are presented as normal mass storage devices after that.

Any ideas/suggestions where to begin probing this?

@petersilva
Copy link
Owner

You're getting into reverse engineering and bus probing and such. I don't have expertise there. Everything I did was based on documentation and even engineering advice provided by Drobo. Never had to do any spelunking. At some point, Drobo decided that it wasn't worth their time and clammed up, which is one of the main reasons drobo-utils doesn't support newer models. The E-SATA and thunderbolt stuff is not documented, afaik.

Also... Even if you get the devices visible, you have to format it with a file system that Drobo understands. I guess you can use a MacOS one... back in the day, they only supported ext3 (NOT ext4) so that got limiting over time. you can't use btrfs or zfs which would be fun choices now. So... you have a major project on your hands to get that working on Linux.

@smdwireless
Copy link
Author

smdwireless commented Feb 1, 2022

Agreed, this will be quite the task to reverse engineer and especially without documentation... I will reach out to Drobo to see if they are willing to help and if not, will just return the unit and buy a Synology instead.
That would be a pity since I do prefer the lower maintenance of the drobo and the fact that it "just works".

I think this drobo actually supports ext3 like others do. I have managed successfully to format it in ext3 using homebrew utilities under MacOS, so that bit of pre-sales information from Drobo was true. What they failed to mention before I bought this was that it has a non-standard SCSI controller interface that would not present a regular mass-storage device out of the box.

@petersilva
Copy link
Owner

yup. Synology is a good product. it is pretty open source friendly... more open.

@smdwireless
Copy link
Author

I would very much like to stick with the Drobo ecosystem so I've reached out on their support channels with this to see if there is any interest from the community and any input from Drobo Inc.'s support team.

I guess we'll see if they still care about their products and customers.

@petersilva
Copy link
Owner

In case it helps... if you Drobo does release documentation... I would be ready to assist however I can... but not having hardware... the burden would fall more on you as a tester at least, and potentially developing something that works over thunderbolt.

@smdwireless
Copy link
Author

In case it helps... if you Drobo does release documentation... I would be ready to assist however I can... but not having hardware... the burden would fall more on you as a tester at least, and potentially developing something that works over thunderbolt.

Thanks @petersilva I really appreciate this and we can see what can be done about getting hardware to you if there is positive feedback from Drobo.

FYI: the message thread is here.

@Pyrolistical
Copy link

I suspect this would also apply to Drobo 5D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants