2

Lately I've gotten inspired to practice some self-hosting, and my old Early 2015 MBP isn't doing anything while selling for practically no benefit to me. I want to grab a spare Seagate hard drive and turn it to a local network file hosting server, so I started an Ubuntu Server in a VirtualBox VM in the MBP. At this point in my homework, if I can connect my Seagate drive to the virtualized server, I am effectively finished.

I formatted the drive to exfat and begun the process, and after encountering and fixing a slew of issues, I ran into this damning error message on the Ubuntu Server startup/or var/logs/syslogs:

USB controller 0000:00:0c.0 does not support streams, which are required by the UAS driver. Please try an other USB controller if you wish to use UAS.

The presence of this error had the following consequences for me:

  • I could find the Seagate drive with sudo lsusb, but not sudo fdisk -l.
  • I cannot mount the Seagate drive onto my Ubuntu Server VM.

For the record, I've considered other server solutions and tried Docker Desktop, Docker, dual booting, and replacing the MacOS with Linux altogether, but all of these come with their own headaches and problems, and I don't want to make investments while at an experimental stage.

I have no idea what streams or UAS are, but I know that it is some kind of optimizing process that has something to do with USB 3.0. Online searching only confirms that the 2015 MBP supports USB 3.0, but doesn't say anything about UAS or streams. This creates ambiguity to my troubleshooting process because I want to know where the drive mounting process has failed.

The error message suggests that my Macbook Pro can't mount the Seagate drive. This seems false, because I can mount the Seagate drive fine on my host machine and view the files inside. So I wondered if it was a problem with how the VM interacts with my MBP, but my understanding might very well be wrong.

I connected my Seagate drive to a Windows machine and turned on an Ubuntu Server VM with basically the same setup. In this case I was able to successfully mount the server, and the streams error message didn't appear. Now, I'm certain the problem is with my 2015 Macbook Pro. So I want to ask:

  1. Does the 2015 Macbook Pro USB controller support streams? (If so, why does the Ubuntu Server VM not acknowledge it?)
  2. How can I overcome the controller issue in general? Do I upgrade the controller, or disable UAS? If so, how?

Update: On further testing with Toshiba and Sandisk drives, it seems that only the Seagate drive is the one causing issues. Also, it seems from Wikipedia that some of the UAS blame lies with Ubuntu. This is also a bit weird, since my Ubuntu on Windows had no problems...

Update 2: Some unsuccessful attempts:

  • disabling UAS (shown here)
  • weakening the filter restriction as shown here.
  • using Ubuntu Server 20 instead of 22, which introduced additional issues
  • formatting exfat to ext4.

Some research has shown similar issues:

Additional output of sudo dmesg -w after connecting the Seagate drive:

[   18.447844] loop4: detected capacity change from 0 to 8
[   45.758915] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[   45.782780] usb 2-1: New USB device found, idVendor=0bc2, idProduct=2344, bcdDevice= 7.12
[   45.782785] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   45.782787] usb 2-1: Product: Portable
[   45.782788] usb 2-1: Manufacturer: Seagate
[   45.782790] usb 2-1: SerialNumber: NAAZ8K3W
[   45.824058] usb 2-1: UAS is ignored for this device, using usb-storage instead
[   45.824061] usb-storage 2-1:1.0: USB Mass Storage device detected
[   45.824476] usb-storage 2-1:1.0: Quirks match for vid 0bc2 pid 2344: 800000
[   45.828004] scsi host3: usb-storage 2-1:1.0
[   45.828259] usbcore: registered new interface driver usb-storage
[   45.832897] usbcore: registered new interface driver uas
[   67.498444] usb 2-1: reset SuperSpeed USB device number 2 using xhci_hcd

Will look more along the lines of "usb in lsusb not fdisk" google searches.

Update 3: I found a working solution. Instead of mounting Seagate as a USB drive, I formatted it to APFS and mounted Seagate to the host first in /Volumes/SEAGATE, then mounted /Volumes/SEAGATE as a shared folder as shown here.

Initial tests that passed include:

  • add helloworld.txt to Seagate drive from Host. helloworld.txt can be seen from Guest.
  • write helloworld.txt from Host to mounted shared folder. This required sudo privileges., but it can be seen from Host.

Will defer judgment after some more tests.

Update 4: Update 3 works for me, just watched a Jellyfin video where the data is stored in the Seagate drive from a different computer. Answer posted.

4
  • UAS is USB attached SCSI. Is there a reason to use this or would a filtered USB attachment work? See eltima.com/article/virtualbox-usb-passthrough
    – Allan
    Commented Mar 7, 2023 at 5:36
  • @Allan I read that UAS would speed up transfers, though I don't know whether it matters if I'm the only user. The article was one of the first resources I checked.
    – wangf22
    Commented Mar 7, 2023 at 6:21
  • You won’t get any more speed thsn what the USB port can deliver. Try using a filtered device. It might work with UAS.
    – Allan
    Commented Mar 7, 2023 at 14:05
  • @Allan Unfortunately disabling UAS did not fix the issue. What do you mean by a "filtered USB device/attachment"? Is this software?
    – wangf22
    Commented Mar 8, 2023 at 8:48

2 Answers 2

2

A VirtualBox solution: instead of mounting the drive directly to the VirtualBox VM via USB passthrough, mount the drive to the VM as a shared folder from the MacOS host as follows:

  1. Mount it first to the MacOS to /Volumes/<DRIVE> (drive needs to be OSX-readable/writable e.g. in APFS format)
  2. Share the folder to the VM as <DRIVE>, following folder sharing instructions, e.g. share folder between MacOS and Ubuntu (Medium)

The drive is treated as a shared folder and thus will be accessible by both the Guest and Host, even when VirtualBox is not run with elevated privileges.

3
  • When using your solution, does save (or write) operations from Linux to the USB ExFAT formatted drive cause any hidden ._ files to be created? By ._ files, I mean as defined in this question. Commented Mar 9, 2023 at 0:50
  • @DavidAnderson I haven't tried ExFAT. On APFS I don't see those ._ files, though there are housekeeping files like DS Store and fseventsd. Note that such files are a symptom of the format.
    – wangf22
    Commented Mar 9, 2023 at 1:07
  • My mistake. I see in your initial question you were using ExFAT, but in your answer you are using APFS. Commented Mar 9, 2023 at 1:54
1

Install and use VM Fusion Player instead of Oracle VirtualBox. When for personal use, VM Fusion Player is free to use. You can have both installed at the same time, so you do not have to remove VirtualBox. When configuring a virtual machine, Fusion Player has the ability to select which USB devices the virtual machine should have access to. Virtual Box also has this ability, but is much harder to configure and use.

For example, I have OS X Yosemite installed in a VM Fusion Player virtual machine on a 2013 iMac running macOS Catalina. I also have a Samsung T7 SSD plugged into the USB 3.O (5 Gb/s) Type-A port. If I want the virtual machine to see the SSD, then all I have to do is select the drive and set the "Plug in Action".

enter image description here

1
  • Thanks a lot for the answer. I won't be surprised if this works, but I think this approach is a bit nuclear. For now I'll take a look at some other options, as it seems this is a very common issue with Seagate and VBox. Then I'll try this.
    – wangf22
    Commented Mar 8, 2023 at 5:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .