Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Vghty

macrumors newbie
Original poster
Mar 17, 2008
20
0
I recently bought the BlackJet TX-1CXQ reader. With its Thunderbolt 3 interface (allowing bus transfer speeds of up to 40Gb/s), I was hoping this reader would allow the full potential speed out of my 1750MB/s CFExpress card (Lexar LCFX10-256CRB). I am aware these numbers are top speeds, but Lexar specifies minimum sustained write speeds of 1300MB/s. Other people managed to see 1400 to 1600 MB/s read on this card in tests.

In my testing, however, the BlackJet did a very poor job. I extended my tests to 6 computers (two MacOS and four Windows, with various OS versions) and consistently, the BlackJet did (much) worse than my Angelbird CFexpress Type B Card Reader MK2, a USB reader (which supports 20 Gb/s USB 3.2 Gen 2x2 but in my setup is limited to 10 GB/s USB 3.2 Gen 2x1 because of the ports in my MacBook Pro M1).

Contact with the Atech helpdesk (who makes the BlackJet) did not solve the issue. They told me I should get speeds of around 1600 Mb/s, and came with several suggestions/ideas, but it did not solve the issue. Note that I tested only with the Lexar LCFX10-256CRB (one of the -only- 3 CFExpress cards approved by Nikon for the Z7 and also approved for my D500); I cannot say anything about whether other card brands or series would show different performance.

Another thing to keep in mind is that even if the BlackJet TX-1CXQ also supports XQD cards (something I cared for as I have quite some), this requires installing additional drivers (both on MacOS and Windows), and these drivers are not available for Apple M1 based computers.

I made a video where I review both card readers, show my tests and also the test setup:

 

Attachments

  • Screenshot 2023-05-19 at 08.54.15.png
    Screenshot 2023-05-19 at 08.54.15.png
    460.6 KB · Views: 169
  • Screenshot 2023-05-19 at 08.53.25.png
    Screenshot 2023-05-19 at 08.53.25.png
    473.5 KB · Views: 54
  • Screenshot 2023-05-19 at 08.53.50.png
    Screenshot 2023-05-19 at 08.53.50.png
    204.3 KB · Views: 52

joevt

Contributor
Jun 21, 2012
6,660
4,078
Apple Silicon Macs have poor USB speed for both USB 3.1 gen 2 (10 Gbps) and USB 3.0 (5 Gbps) speeds. An Intel Mac can do 1060 MB/s with USB 3.1 gen 2 (10 Gbps) but Apple Silicon Macs are limited to less than that.
https://forums.macrumors.com/thread...ally-10gb-s-also-definitely-not-usb4.2269777/
But your results show almost equal performance between the MacBook Pros with M1 Max and the i7 (the intel is slightly faster). Maybe Apple has improved USB performance slightly in Apple Silicon Macs since then. Try AmorphousDiskMark.app sequential read and write test for benchmarks (similar to CrystalDiskMark on Windows). It should give numbers closer to the theoretical limit.

I tried an ASMedia ASM3242 in a Thunderbolt PCIe expansion chassis with a Mac mini 2018 running Ventura 13.2 but it seems macOS doesn't support USB 3.2 gen 2x2 (20 Gbps) or USB 3.2 gen 1x2 (10 Gbps). Note that gen 1x2 is slower than gen 2x1 because gen 1 uses 8b/10b encoding (4 Gbps data for gen 1x1) and gen 2 uses 128b/130b (9.7 Gbps). In your chart where gen 1x1 is ≈460 MB/s, I would expect ≈920 MB/s for gen 1x2.

Thunderbolt 3/4 is actually 41.25 Gbps and uses 64b/66b encoding for 40 Gbps data.

USB4 is 40 Gbps and uses 128b/132b encoding so data is 38.8 Gbps.

USB4 v2 is 80 Gbps and uses PAM-3 encoding. It also has an asymmetric mode of 120Gbps but I don't know if that works for data and it would reduce receive speed to 40 Gbps. Asymmetric mode is useful when you're transmitting a lot of DisplayPort.

M1 iPad has Thunderbolt 4 but I don't know if it supports PCIe devices. And it won't support PCIe devices that require a third party driver.
https://knowledge.apogeedigital.com/ipad-pro-m1-thunderbolt-compatibility

Thunderbolt can't do PCIe much greater than 25 Gbps (3125 MB/s). I suppose 3240 MB/s (25.9 Gbps) is not impossible - there's probably a benchmark that shows something like that somewhere. The first numbers from Intel Marketing were 22 Gbps (2750 MB/s) and some manufacturers rounded that up to 2800 MB/s. Apple Pro Display XDR can do ≈39 Gbps DisplayPort. Whatever is not used by DisplayPort can be used by PCIe.

As for the poor Thunderbolt performance, did you check that the CFExpress card is connected as PCIe gen 3 (8 GT/s) x2 ? System Information.app should show the link rate and lanes but it doesn't include info for parent PCIe bridges (including the Thunderbolt controllers and whatever they're connected to). You can use pcitree.sh on Intel Mac macOS or Linux to get link rate and link width for all PCIe devices at once.
https://gist.github.com/joevt/e3cd4ff08aae06279134969c98ca3ab7

If the problem is not link rate or link width, then maybe it could be a problem with the interaction of the CFExpress card and the Thunderbolt controller. I don't know how to diagnose that - if there's some kind of PCIe performance counters somewhere, or some kind of PCIe errors that can be seen in the pci config of the devices involved (using pciutils). I suppose a test of the CFExpress card connected directly to a PCIe gen 3 or gen 4 x4 slot of a PC should give a better idea of the upper bounds of the CFExpress card.
 

Vghty

macrumors newbie
Original poster
Mar 17, 2008
20
0
Thanks, joevt, for the extensive answer! I really appreciate your knowledgeable input. Let me come back to a couple of points you make.

>> I tried an ASMedia ASM3242 in a Thunderbolt PCIe expansion chassis with a Mac mini 2018 running Ventura 13.2 but it seems macOS doesn't support USB 3.2 gen 2x2 (20 Gbps) or USB 3.2 gen 1x2 (10 Gbps)

Interesting! I have been looking whether I could find a dongle for the Mac that supported USB 3.2 gen 2x2 (20 Gbps) but did not find any, or a dock that would have such a port (did not find any either, but I guess they must exist). But such a product would be useless if MacOS also does not support it! Guess I will stop looking.

>> As for the poor Thunderbolt performance, did you check that the CFExpress card is connected as PCIe gen 3 (8 GT/s) x2

System Information reports this memory card reader as “Link Status: 0x2”; “Speed: Up to 40Gb/s x1” and “Current Link Width: 0x2”, so that seems to be OK.

>> You can use pcitree.sh on Intel Mac macOS or Linux to get link rate and link width for all PCIe devices at once.

I haven’t got into running that yet but I hope to do so in the near future.

>> I suppose a test of the CFExpress card connected directly to a PCIe gen 3 or gen 4 x4 slot of a PC should give a better idea of the upper bounds of the CFExpress card.

Unfortunately, all the machines I have nowadays are laptops or other small form-factor computers (like the Intel NUC). Otherwise, I would love to test that. I saw the DELOCK 91748 PCIe CFExpress card reader (https://www.delock.com/produkt/91748/treiber.html) running on 4 lanes (they do not specify the generation, though)

As an additional note, I was kind of charmed by the potential of TB3. But I increasingly realise how dependent TB memory card readers are dependent on additional drivers (both Windows and MacOS), which are not always available for your OS and/or hardware (like the XQD drivers that are not available for Apple M1 machines). This also creates (more) risks for future upgrades, where things suddenly may not work anymore. I start to tend more and more to stick to USB for this application.
 

Attachments

  • Screenshot 2023-05-27 at 06.01.14.png
    Screenshot 2023-05-27 at 06.01.14.png
    500.5 KB · Views: 55

joevt

Contributor
Jun 21, 2012
6,660
4,078
System Information reports this memory card reader as “Link Status: 0x2”; “Speed: Up to 40Gb/s x1” and “Current Link Width: 0x2”, so that seems to be OK.
That's the Thunderbolt link rate. Thunderbolt tunnels DisplayPort and PCIe data over the Thunderbolt cable from the host Thunderbolt controller to the peripheral Thunderbolt controller where the signals are converted back to DisplayPort and PCIe.

Look in the PCI tab of System Information.app to find your CF Express device. It will show it's PCI link rate and link width there, but System Information.app does not show PCI link rate and link width of parent devices (PCI bridges).

As an additional note, I was kind of charmed by the potential of TB3. But I increasingly realise how dependent TB memory card readers are dependent on additional drivers (both Windows and MacOS), which are not always available for your OS and/or hardware (like the XQD drivers that are not available for Apple M1 machines). This also creates (more) risks for future upgrades, where things suddenly may not work anymore. I start to tend more and more to stick to USB for this application.
I don't understand what the XQD drivers are for. CFExpress is a standard that uses the NVMe protocol and macOS already has drivers for NVMe.

Do you have a download link? Which macOS versions is the driver for?

Wikipedia says CFExpress is essentially the next revision of XQD.

Wikipedia says XQD uses PCIe, but that doesn't mean NVMe. It could be anything. It could be a PCI controller that is of a type not supported by Apple's macOS drivers (NVMe, AHCI, XHCI, etc.). Information about the PCI device using pcitree.sh or ioreg would be interesting. Maybe there's no XQD standard for the PCI controller. I can't find any info about it. No Linux drivers?
 

Vghty

macrumors newbie
Original poster
Mar 17, 2008
20
0
Thanks again! Appreciate the informative feedback you provide.

>> Look in the PCI tab of System Information.app to find your CF Express device. It will show it's PCI link rate and link width there, but System Information.app does not show PCI link rate and link width of parent devices (PCI bridges).

Just did that, and attached is the result. I checked that this entry is actually the TB3 card reader I am talking about by removing the cable and refreshing the information in System Information.app, and indeed, it disappeared. So it's indeed my card reader we see info about here.

I see in that information: "Link Width: X2" and "Link Speed: 8.0 GT/s". Would be happy to hear what you think of this. Considering that speed is listed in GT/s (gigatransfers per second). From this site I take (assume) that two lanes result in 2 x 984.6MB/s = 1,969.2 MB/s (IO do not want to suggest a lot of precision here by presenting it this way, but just coying in the numbers). If this is true, than the PCIe bus speed would not be the limiting factor in my experiments, as the speed gets stuck at half of that speed.

>> I don't understand what the XQD drivers are for. CFExpress is a standard that uses the NVMe protocol and macOS already has drivers for NVMe.

The story of XQD and CFExpress is a complicated one. XQD was already complicated in itself, where earlier cards were not always compatible with all readers, and where you need to carefully check the compatibility between a given camera model and a given card type, as some combinations are listed by the camera manufacturer as incompatible or not reliable.

Then came CFExpress, and I think it's fair to say that CFExpress is not backwards compatible with XQD. Most CFExpress card readers cannot read XQD cards at all, but a few can (by implementing both protocols).

>> Do you have a download link? Which macOS versions is the driver for?

Concerning the required drivers, my card reader came with a separate warning paper (see photo). I'd like to refer to the website of BlackJet: https://blackjetusa.com/products/blackjet-tx-1cxq-cfexpress-b-xqd-thunderbolt-3-reader. Here we read:

"XQD Cards require the latest driver from Sony to be functional" (with a link to a broken URL... )
"Sony has not updated their XQD driver to be compatible with M1 or M2 Macs."

The Sony website has XQD drivers for Windows 7/8.1/10 as well as XQD drivers for MacOS, where the latter are only for quite old versions of MacOS and apparently no version for Mac M1 processors.

Also other card reader manufacturers talk about XQD drivers for their devices (see Sonnet and Prograde). They often seem to refer to the Sony drivers.

I did not bother trying to install the driver on my MacBook Pro M1 knowing this processor would not be supported. I might give it a try at an older Intel-based MacBook.

It's quite a mess, these two types of memory cards, quite unlike SD cards (where there are many different versions/hardware iterations, but in the end, backwards compatibility is good, and a basic card reader works with any of them).


Best, Rudi
 

Attachments

  • Screenshot 2023-05-27 at 07.56.21.png
    Screenshot 2023-05-27 at 07.56.21.png
    467.2 KB · Views: 65
  • IMG_1579 Large.jpeg
    IMG_1579 Large.jpeg
    322.2 KB · Views: 56

joevt

Contributor
Jun 21, 2012
6,660
4,078
Just did that, and attached is the result. I checked that this entry is actually the TB3 card reader I am talking about by removing the cable and refreshing the information in System Information.app, and indeed, it disappeared. So it's indeed my card reader we see info about here.
You show an NVMe device which I guess is the CFExpress card.
If never heard of the vendor https://pci-ids.ucw.cz/read/PC/1d97

I see in that information: "Link Width: X2" and "Link Speed: 8.0 GT/s". Would be happy to hear what you think of this. Considering that speed is listed in GT/s (gigatransfers per second). From this site I take (assume) that two lanes result in 2 x 984.6MB/s = 1,969.2 MB/s (IO do not want to suggest a lot of precision here by presenting it this way, but just coying in the numbers). If this is true, than the PCIe bus speed would not be the limiting factor in my experiments, as the speed gets stuck at half of that speed.
One would expect ≈80% of that theoretical number, so ≈1600 MB/s.
You have to check all the parent PCI bridges (using pcitree.sh on Intel Mac) to make sure none of them are bottle necking that 8 GT/s x2 connection. It's unlikely for there to be a bottle neck though. My current theory is that the slow speed is due to an interaction between the CFExpress device and Thunderbolt. You can see this with some M.2 NVMe devices. It's related to the NVMe controller on the device (whether it be a M.2, U.2, or CFExpress device) but I don't know how to detect that other than doing benchmarks. I would think there could be some info regarding the problem in the PCI config registers of the device or parent bridges but I've never looked for it and I don't know enough about the PCI registers to know what to look for. lspci can be used to list the registers sudo lspci -nnvvv

If you had an M.2 device that doesn't have the problem, then you could put it in a CFExpress to M.2 adapter and try that.

"XQD Cards require the latest driver from Sony to be functional" (with a link to a broken URL... )
"Sony has not updated their XQD driver to be compatible with M1 or M2 Macs."

The Sony website has XQD drivers for Windows 7/8.1/10 as well as XQD drivers for MacOS, where the latter are only for quite old versions of MacOS and apparently no version for Mac M1 processors.

Also other card reader manufacturers talk about XQD drivers for their devices (see Sonnet and Prograde). They often seem to refer to the Sony drivers.

I did not bother trying to install the driver on my MacBook Pro M1 knowing this processor would not be supported. I might give it a try at an older Intel-based MacBook.

It's quite a mess, these two types of memory cards, quite unlike SD cards (where there are many different versions/hardware iterations, but in the end, backwards compatibility is good, and a basic card reader works with any of them).
I couldn't get the Sony link at https://www.sony.com.sg/electronics/support/downloads/00015303 to download anything.

I found this older Sony download for a macOS 10.9 version of the driver (2.0.0.06260, Copyright 2011-2014 Sony Corporation)
https://www.sony.net/Products/memorycard/xqd/XQD_Drv_Installer_mac.zip

The Sonnet XQD Adapter Device Drivers Installer for macOS 3.0.0 seems to be an updated version of the Sony driver (3.1.0.13110 Copyright 2007-2022 Sony Corporation). It supports Intel and Apple Silicon Macs.

You can use Pacifist to extract the kexts, then use BBEdit.app to compare the Info.plist files.
The 2.0.0 driver names the driver class as com_sony_pci_XQDController.
The 3.0.0 driver names the driver class as com_sony_pci_TKController.
I don't know if those mean the same thing.
Both have the same CFBundleIdentifier com.sony.pci.XQD which is what you see in kextstat output. That must mean TK and XQD are the same thing, because you can't load both drivers while they have the same CFBundleIdentifier.

They both have the same IOPCISecondaryMatch matching criteria which is a device with sub system vendor ID 104d and subsystem device ID 905c which is for Sony's SxS Pro memory card. https://pci-ids.ucw.cz/read/PC/104d/905c
I suppose an incompatible device would have different vendor/device IDs.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.