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:
- Does the 2015 Macbook Pro USB controller support streams? (If so, why does the Ubuntu Server VM not acknowledge it?)
- 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:
- USB hard disk captured but can not be seen in guest OS.
- USB mount not listed in fdisk
- USB listed in lsusb and usb-devices, but not on fdisk -l or lsblk, nor in /dev/sd*
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:
helloworld.txtto Seagate drive from Host.
helloworld.txtcan be seen from Guest.
helloworld.txtfrom 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.