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

Framework 16 incompatible with JMS583 based NVMe SSD enclosures #38

Open
Niko-O opened this issue Jan 10, 2025 · 4 comments
Open

Framework 16 incompatible with JMS583 based NVMe SSD enclosures #38

Niko-O opened this issue Jan 10, 2025 · 4 comments
Labels
3.05 Laptop 16 AMD Ryzen 7040 Framework Laptop 16 (AMD Ryzen™ 7040 Series)

Comments

@Niko-O
Copy link

Niko-O commented Jan 10, 2025

Device Information

System Model or SKU

Framework Laptop 16 (AMD Ryzen™ 7040 Series)

BIOS VERSION

C:\Windows\system32>wmic bios get SMBIOSBIOSVERSION
SMBIOSBIOSVersion
03.05

DIY Edition information

I ordered DIY but the laptop came mostly pre-assembled. (Not complaining, just noting down.)

Memory: I ordered "DDR5-5600 - 32GB (2 x 16GB)", it was already installed and I never replaced it.
Storage: WD Black SN770M 1TB (2230 slot)
Storage: When running Windows 10: Samsung 990 Pro 2TB (2280 slot)
Storage: When running Windows 11: Samsung 970 Evo Plus 2TB (2280 slot)

Port/Peripheral information

https://www.amazon.de/dp/B08C2G7CQF
AGPTEK m.2 NVMe SSD to USB 3.2 Gen 2 (10Gbit/s) enclosure. Uses the JMicron JMS583 chip internally.

  • Port the Peripheral was connected to
  • Device or expansion card attached to the Adjacent port to the port that is having the issue

See section "Details" below.

Standalone Operation

No

Describe the bug

When the SSD enclosure is connected directly to the laptop, such that it connects with USB 3.2 Gen 2 (10Gbit/s), and files are copied to/from the SSD, then:

  • Most of the times, the copy speed quickly drops to zero, stays there for a few seconds, and then the operation fails with a 0x800701B1 error code.
  • But sometimes the speed stays at zero for minutes without completely disconnecting. And sometimes the copy continues at wildly inconsistent (i.e. slow) speeds.
  • Sometimes I don't even have to start the copy, and simply opening the drive in Explorer causes a disconnect.
  • And very rarely it appears to be stable at consistent and plausible speeds.

It seems that different slots also have different behavior... sometimes? It's hard to tell.

Steps To Reproduce

  • Put an m.2 NVMe SSD into the enclosure.
  • Connect the enclosure directly to the laptop.
  • Open the drive in Windows Explorer.
  • Copy files off the drive.

Expected behavior

The copy should happen at consistent and high speeds and complete successfully.

Details

Tests

  • The problematic m.2 NVMe to USB-C enclosure connects with USB 3.2 Gen 2 (10Gbit/s). I do not have any other devices that feature such a USB connection.
  • The issue is not specific to the SSDs in the problematic enclosure. I tried different SSDs.
  • The issue does not persist when using an m.2 SATA to USB-C enclosure that connects with USB 3.1 Gen 2 (10Gbit/s).
  • The issue is not specific to whether I use a USB-C to USB-C cable connected to a USB-C expansion module, or USB-C to USB-A cable connected to a USB-A expansion module.
  • With the USB-C to USB-A cable and a USB-A expansion module, I can do the "half insert trick" (insert the USB-A plug partially at first, wait for the device to show up, then insert it fully). This way, the problematic enclosure connects with USB 2.1 and the issue does not persist.
  • The issue is not specific to the used cable. I tried different ones. I also tried skipping the expansion card and connecting directly to the recessed USB-C port, but the issue does persist.
  • The issue is not specific to the presence and usage of other expansion modules. The issue persists with nothing else connected to the laptop, with regular use, and with intense use on all modules.
  • The issue is not specific to whether I read from or write to the drive.
  • The issue does not persist when using a USB stick that connects with USB 3.2 Gen 1 (5Gbit/s).
  • The issue does not persist if I use a (passive) USB hub that connects with USB 3.0 (5Gbit/s) and connect the problematic enclosure to that. It does not matter whether I first connect the enclosure to the hub, or the hub to the expansion module.
  • The issue does not persist if I use an (active) USB-C dock that connects with 5Gbit/s (I forgot to write down the USB version and I don't have that dock anymore, but it definitely was 5Gbit/s) and connecting the problematic enclosure to that.
  • The issue does persist when using a USB-A interposer board with beefy capacitors on the power rails and additional externally supplied 5V.

At some point I got an overcurrent warning when testing on slot 3. I had to reboot to get the port working again.
s5

More tests:

  • A family member got a semi-modern laptop (Acer Aspire 5 A517-53-51QS) and I tried the USB enclosure there. It works fine on both USB-C and USB-A ports.
  • Through work I got access to a Digitus DA-71546 m.2 docking station and I tried tha tin various combinations.
    ** Dock powered with the included power supply, data port connected to slot 2.
    ** Dock powered with Framework 180W charger (laptop on battery power), data port connected to slot 2.
    ** Dock powered by Framework Laptop slot 3, data port connected to slot 2.
    ** Dock powered by Framework Laptop slot 2, data port connected to slot 3.
    ** Multiple different SSDs (NVMe only, no SATA SSDs).
    ** Reading from and writing to the SSD.
    ** USB-interposer board on slot 2 with both power and data coming from that one slot (see below).
    The issue does not persist at all with the Digitus dock.

About the USB-interposer board:
It's a USB 2 hub with USB 3 passthrough (https://www.amazon.de/dp/B09241T3CS):
8StBkHikE85bfm4g
00vh2OL5mPK6hxYI
(I bridged the 4.7Ω resistor.)
For the tests, I had the data port of the Digitus dock connected to the USB 3 port of the board and the power port of the dock to one of the USB 2 ports. And the entire board was plugged into slot 2 of the Framework Laptop. So the slot actually had to deliver all of the power. The dock connects with USB 3.2 Gen 2 and, as already mentioned, it works fine this way.
The main difference in the output of USB Device Tree Viewer V3.8.7 between the Digitus dock and the problematic JMicron enclosure seems to be that the Digitus dock reports to be self-powered with a "Demanded Current" of 0 mA, where the JMicron enclosure reports to use 896 mA. Maybe the JMicron enclosure draws more current than what's specified and the port shuts off because of that?

Even more tests

  • USB-C expansion card and 180W Framework charger on slot 4, USB-A expansion card and SSD enclosure on slot 1: Transfer speed dropped to zero, got stuck there, no disconnect, cancelled after a while
  • USB-C expansion card and 180W Framework charger on slot 1, USB-A expansion card and SSD enclosure on slot slots 2, 4 and 6: Transfer speed dropped to zero, got stuck there, no disconnect, cancelled after a while
  • USB-C expansion card and 180W Framework charger on slot 1, USB-A expansion card and SSD enclosure on slot slot 3: Maximum transfer speed at ~830MB/s, did not get stuck but the transfer is somewhat unstable with intermittent dips to lower speeds.
    Unstable Copy Slot 3 (1)
    Unstable Copy Slot 3 (2)
  • USB-C expansion card and 180W Framework charger on slot 1, USB-A expansion card and SSD enclosure on slot slot 5: The slot stopped working altogether at first (i.e. no USB devices were recognized). After a reboot, it started working again. Maximum transfer speed at ~850MB/s, did not get stuck but the transfer is somewhat unstable.
    Unstable Copy Slot 5

Note: With the unpowered hub inbetween, the transfer speed is overall lower but very stable (<±2MB/s):
Stable Copy Slot 2 With Unpowered Hub

So the fluctuations on slot 3 and 5 don't seem normal to me.

Screenshots

Two examples of copy operations with inconsistent speeds (but no disconnects):
s6
s12

Here's a video that demonstrates the issue:
https://github.com/user-attachments/assets/ba50bd61-6504-42fd-8e3f-e55aeae53fa3

  • 00:00 At first, the enclosure is connected to an unpowered hub, which in turn is connected to slot 2.
  • 00:03 The screen shows the SSD in the enclosure (P drive) in the top right, one of the internal SSD (C drive) in the bottom right, and USB Device Tree Viewer on the left.
  • 00:12 I copy a virtual machine (21.5GiB in total) from P to C. Note how the transfer speed is perfectly stable at 370MiB/s (~3.1Gbit/s).
  • 00:23 The transfer finishes successfully. I plug the enclosure directly into slot 2.
  • 00:46 (After deleting the previously copied files) I copy the same virtual machine from P to C again.
  • 00:51 The transfer speed reaches 0 Bytes/s.
  • 01:03 The transfer speed momentarily goes up a few times while I wait, but always quickly goes back down to 0.
  • 01:10 I cancel the transfer and wait for a while before giving up and ending the video.

Operating System:

Happens both on Windows 11 23H2 and Windows 10 22H2 with up-to-date drivers and after a mainboard reset.

Additional context

Add any other context about the problem here.

On 2024-11-24 I contacted Framework Support, asking whether there is any progress on this issue, as it was brought up to Framework support already, according to https://community.frame.work/t/amd-framework-and-nvme-ssd-enclosure-compatibility-investigation/41775/12.
On 2025-01-03, after a long and frustrating merry-go-round of ignoring my questions or giving non-sequitor answers, asking questions that I have already answered, giving me unclear and sometimes flat-out wrong instructions, I was instructed to file a new issue for this here.

@CDRXavier
Copy link

CDRXavier commented Jan 16, 2025

Can confirm that it is also flaky on my Framework 16, but only on the DP/PD capable ports. Connected to the USB 3.2 ports there are less issues.

And mine are straight USB connections to the laptop (root hub), with nothing in between.

At some point I got an overcurrent warning when testing on slot 3. I had to reboot to get the port working again.

Can't say I ever bumped into that. Maybe it's going to be a problem if you use a particularly power hungry SSD. Framework's USB 5V limit is almost unconveniently low. But the 900mA (1A) ;s according to spec.

About the USB-interposer board: It's a USB 2 hub with USB 3 passthrough (https://www.amazon.de/dp/B09241T3CS):

This stuff is straight-up out-of-spec. Do not expect any connected 3.0 device to work.

00:51 The transfer speed reaches 0 Bytes/s.

It seems like sometimes, there is just a massive delay between the transaction packets. This can be seen when you plug in the drive in BIOS. Sometimes, it take maybe 1 second to scan that external SSD, sometimes it take forever. The theoretical maximum speed is quite rapid, but sometimes it's below USB 2 speeds. This happens outside of a OS environment, let alone a Ubuntu booted from said USB attached storage.

@jcdutton
Copy link

jcdutton commented Feb 2, 2025

Have you seen this page:
https://knowledgebase.frame.work/en_us/expansion-card-slot-functionality-on-framework-laptop-16-rkUjGm7cn

Specifically read the paragraph about how much power each port can output.
Most nvme enclosures need 3A option, so best to use slot 1 or 4 for the nvme enclosure.
I use slot 1,4 for fast devices, 2 or 5 for PSU, and hardly use slot 3 or 6.

@Niko-O
Copy link
Author

Niko-O commented Feb 2, 2025

@jcdutton Thanks. I have seen the graphic, but not the information about the current limitation. That explains part of it.

@JohnAZoidberg JohnAZoidberg added Laptop 16 AMD Ryzen 7040 Framework Laptop 16 (AMD Ryzen™ 7040 Series) 3.05 labels Feb 5, 2025
@CDRXavier
Copy link

CDRXavier commented Feb 10, 2025

Yesterday I have notived that the right side (port 5) doesn't work with my JMS583 enclosure, I get massive latency. Doesn't seem to work on USB2, either. The port just kept resetting.

Have tested with multiple enclosures from different brands. Orico's, and Aliexpress Specisal 1 and AliExpress Special 2. Aliexpress ones' dont have branding, but one of mine have "ITGZ", and the other "iRhasta",

However, port 4 is able to work with the JMS583 (with the USB-A card). Port 3 works immediately, and Port 2 worked after a brief "port reset". Seem to be switching modes between something. Port 5 seem to have the "port reset" issue. Would get stuck in a weird state that lags all transaction. Sometimes port 6 as well.

Port 5 and 6 resetting is a separate issue. I can replicate that with USB 2 .. USB sticks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.05 Laptop 16 AMD Ryzen 7040 Framework Laptop 16 (AMD Ryzen™ 7040 Series)
Projects
None yet
Development

No branches or pull requests

4 participants