Added m.2 expansion bd (NVME) to my Argon one v2 case. Tried 3 different nvme ssd. All 3 had slower read/write speeds as compared to the original data expansion bd with Sata ssd. Purchased a m.2 nvme usb 3.0 adapter and inserted my nvme ssd and plugged into the argon one USB 3.0 port (unplugged jumper connecting the expansion bd) now read/write speeds were better than the original sata expansion bd. Booting from Ubuntu mate on the ssd (both sata and nvme ) although I also tried the same tests using pi os.
Any ideas ?
I’m seeing the same sluggish performance. It looks like the ASMedia chipset in the nVME base doesn’t support UAS, even though the website says it does (?):
└─$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
For UAS we should see Driver=uas for the Mass Storage device. What do you get?
I get the same as you indicating the Argon NVME expansion bd does not support UAS. Very disappointing./: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
Yeah, frustrating as their website explicitly lists UAS (aka UASP) as a feature on the product page for the more expensive nvme base
It appears that the expansion board isn’t advertising the UASP capability, I’ve recently performed an investigation into the poor performance of this board and you may be interested in reading more: https://www.martinrowan.co.uk/2023/01/argon-one-nvme-board-slower-than-sata/
@tas100x @oliverlavery Can you get the output from lsusb -tv
so that I can see a bit more information?
As a new user, I cannot post with more than 2 links in the response… So here is my actual response.
TLDR
@martinrowan I think I got it working
I ran into a different issue with S.M.A.R.T. information - any help is much appreciated!
Thats good to know. I’ve another NVMe board on order from another supplier to see if it also has the same problem. I suspect they’ve flashed the firmware for the M.2 SATA SSD board on to some NVMe boards, which seems to make it work, but only bulk usb-storage mode.
With 2 boards I’ll also try and update the firmware to confirm (I didn’t want to try it and risk bricking the only board I’ve got to experiment with at the minute). Then we just need Argon40 to fix their production and testing process and release an official firmware update to fix the problem.
I assume you picked the new pid when you flashed it? Another user on twitter where uas was working their board had a non ASMedia vid (which is interesting) showing as 199d:2362
Hi, I’ve got the NVME extension board as well. It uses uas, but has a different ID!
$ sudo lsusb -tv
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
ID 1d6b:0003 Linux Foundation 3.0 root hub
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
ID 199d:2362
Apparently it is a AS2360 chip; it also advertises “bInterfaceProtocol 98”
$ sudo lsusb -v -d 199d:2362
Bus 002 Device 002: ID 199d:2362 Gen2 10GBbps AS2360
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.20
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x199d
idProduct 0x2362
bcdDevice 1.00
iManufacturer 2 Gen2 10GBbps
iProduct 3 AS2360
iSerial 1 000000000F02
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0079
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 4
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 98
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
MaxStreams 32
Data-in pipe (0x03)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
MaxStreams 32
Data-out pipe (0x04)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
MaxStreams 32
Status pipe (0x02)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 0
Command pipe (0x01)
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x002a
bNumDeviceCaps 3
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x0000f41e
BESL Link Power Management (LPM) Supported
BESL value 1024 us
Deep BESL value 61440 us
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
SuperSpeedPlus USB Device Capability:
bLength 20
bDescriptorType 16
bDevCapabilityType 10
bmAttributes 0x00000001
Sublink Speed Attribute count 1
Sublink Speed ID count 0
wFunctionalitySupport 0x1100
bmSublinkSpeedAttr[0] 0x000a4030
Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus
bmSublinkSpeedAttr[1] 0x000a40b0
Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x000d
Self Powered
U1 Enabled
U2 Enabled
The performance values are pretty close to the ones posted by kulho:
Running iozone 1024K random read and write tests...
write rewrite random read random write
304472 346971 322792 360290
Running iozone 4K random read and write tests...
write rewrite random read random write
24707 30426 24946 30311
What bothers me much more, I cannot get the SMART readings too:
$ sudo smartctl -a /dev/sda -d scsi
smartctl 7.2 2020-12-30 r5155 [aarch64-linux-5.15.84-v8+] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Vendor: Argon
Product: Forty
Revision: 0
Compliance: SPC-4
User Capacity: 256,060,514,304 bytes [256 GB]
Logical block size: 512 bytes
LU is fully provisioned
Rotation Rate: Solid State Device
Logical Unit id: 0x5000000000000001
Serial number: 20F000000000
Device type: disk
Local Time is: Thu Jan 12 17:26:10 2023 GMT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Temperature Warning: Disabled or Not Supported
=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK
Current Drive Temperature: 0 C
Drive Trip Temperature: 0 C
Error Counter logging not supported
Device does not support Self Test logging
I tried to plug the board to a windows PC, it was not recognized at all. I only have a USB2 cable at hand, could it be the reason?
Thanks I overwrote the firmware that was shipped with my NVMe board with AS_PCIE_210527_81_3A_00.bin which has “fixed” the incorrect driver issue. It appears there is an unknown number of boards (I’ve got 2 now, from different suppliers) which have been flashed with the wrong firmware, which causes the boards to underperform. I’m in discussion with Argon40 about this.
If SMART information works on Windows but not Linux, then I suspect the SMART issue is down to smartmon tools, and you need to raise a bug there: GitHub - smartmontools/smartmontools: Official read only mirror of the smartmontools project SVN there is already one relating to a different ASMedia chip. Of course, it could be a Linux Kernel driver issue too, but if it works on Windows I think it rules out the hardware and firmware.
So today I was busy and I got the SMART information out of the device.
The first thing I messed up last time was the idproduct which was 2364 instead of 2362, which I corrected. The problem is that nvme support for ASM2362 was only added in smarmontools 7.3 and higher… Debian bullseye is still stuck on 7.2 which does not support it. So either you go bookworm or you can do some trickery - I manage to stay on bullseye. The steps I took to achieve it were the following:
I have openmediavault installed on a raspbian os.
prepare some dependencies
sudo apt-get install autoconf automake debhelper-compat libcap-ng-dev libselinux1-dev libsystemd-dev devscripts -y
remove the old smartmontools
sudo dpkg -r --force-depends smartmontools
get the newer version
dget https://deb.debian.org/debian/pool/main/s/smartmontools/smartmontools_7.3-1.dsc
create directory and exctract package into it
dpkg-source -x smartmontools_7.3-1.dsc
go to new directory
cd smartmontools-7.3/
build it
sudo dpkg-buildpackage -rfakeroot -b
go back
cd ..
add the built packages
sudo dpkg -i smartmontools_7.3-1_armhf.deb
sudo dpkg -i smartmontools-dbgsym_7.3-1_armhf.deb
verify everything’s ok
sudo apt-get update && sudo apt-get upgrade
sudo smartctl -V
there should be nothing broken and you should see version 7.3
then to get the smart info do
sudo smartctl -a /dev/sda
for good measure devscripts can be removed, as it’s not needed
sudo apt-get remove devscripts
et voila
So to sum up if we want smart the official way I guess we need to wait until bookworm gets released…
Anyway, now I am trying to get the openmediavault to work… I noticed that it is identifying my disk as sat and sudo smartctl -a /dev/sda -d sat
will throw an error. There is a new type for asmedia - sudo smartctl -a /dev/sda -d sntasmedia
which works for me. However, I cannot seem to yet figure out how to modify the openmedivault to use proper commands.
So I guess my question now is do I wait for Argon40 to come up with a solution or is me updating the firmware the way to go. I am not sure how to do that so would need some instructions. Thanks for pursuing this matter.
I’d hold out for now. It’s the Chinese New Year holiday so unfortunately there is going to be a bit of a delay.
The good news is using the drive with the wrong firmware still works and is still a lot faster than a micro sd card and updating the firmware doesn’t impact what’s stored on your disk. So once we know how they plan to handle resolving this issue (new firmware or replacement boards (if they aren’t allowed to release the firmware and flashing tools)) then it should be straightforward to get a boost in performance when we have a solution.
If you checkout my updated blog post you’ll see the performance gain we hopefully will get to see.
For the openmediavault smart information I have created a github issue. Feel free to follow along or join the conversation. I’ll report back if there’s any breakthrough. The command line smart info is working fine for now.
So status and temperature readings are working in OMV now.
Hopefully, the fix is implemented in the next release. If you don’t want to wait you can follow these steps to get the prebuilt version with the fix. For the fix to work it is important that your chip is showing id 174c:2362 as the fix was hardcoded for these values - see implementation. This means that anyone with a current software implementation in the nvme expansion board from argon40 will need to update the firmware version and specify the correct ASM2362 chip in the flashing tool (see my first comment or head to the @martinrowan 's blog.
Anyway, it would still be preferable if argon40 released an official software release or point to one.
@martinrowan If you are already in touch with argon40, it would make sense to suggest that the new firmware shall have the correct ID of 174c:2362 and not the old one 174c:55aa. If they put something else then the current fix in OMV would not be working.
to find out your current id use command lsusb -tv
E.g.
$ lsusb -tv
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
ID 1d6b:0003 Linux Foundation 3.0 root hub
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
ID 174c:2362 ASMedia Technology Inc.
cheers!
@kulho It appears that the boards that shipped what Argon40 believe is the correct firmware aren’t using the correct vid, 174c is registered to ASMedia, however, according to this twitter user the “working” board he has came with vid: 199d pid: 2362. 199d I don’t believe they should be using, however, if Argon40 go back to using that rather than a further change would be required in openmediavault to handle the configuration they’ve gone with.
That seems a bit awkward. Well then I hope they will be reasonable and use the correct IDs, because it is already problematic to keep track of which chips are not buggy and what are their capabilities.
Wish I’d spotted this thread before going on to purchase NVMe Exp board…and NVMe SSD here in the UK.
Device fails to find the drive…so I’m in a pickle now.
Can anyone help…ideally with step by step instructions …please??
Argon Forty have released updated firmware and instructions. Please find details in my latest post: https://www.martinrowan.co.uk/2023/02/argon-one-nvme-board-fixed/
Thanks for getting this issue resolved. I have performed the fix and here is the before and after results.
results argon nvme adapter bd
before
RandRead: 14855 - RandWrite: 20747 - Read: 19520 - Write: 18083
after
RandRead: 20588 - RandWrite: 27315 - Read: 28261 - Write: 24174