MacOS Ventura and CH340

Hello,

does someone know how to get the CH340 serial to USB chipset running on the actual Apple MacOS ?

Regards
Heinz

My experience with the same system version. (Note that I’m using a hackintosh)

  1. Disable SIP disabling_and_enabling_system_integrity_protection(You can skip this step but if failed then try it)
  2. Reboot
  3. Install pkg from GitHub - adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver: CH340G CH34G CH34X Mac OS X driver
  4. Reboot
  5. It should now be working. (If you used the disable sip method to work, remember never enable SIP again cause it’ll broke again.)

Besides the SIP issue there are still another one uploading firmware to ESP32, currently I still cannot figure out the issue is and I’m using either Linux or Windows to perform the proccess.

macOS has included CH340 driver for quite some time. What is the exact problem?

I strongly recommend against installing any other drivers and in particular drivers from 2018, which predate the major changes Apple has made to USB drivers.

Hello Manuel,
thanks for Your response.
I think that there was on old driver installation on the Mac.
I can confirm, that now CH340 and FTDI based board are working perfect.
Regards Heinz

Glad to hear it’s working.

Indeed, that’s the most common problem: An old driver, installed some time ago, which is now in conflict with Apple’s driver.

Is that on an M1 Mac? I have a Mac with M1Pro SoC (running 13.1) and the CH34x driver seems to be missing. The device is not recognized.
BTW, the FT232 works fine.

I had the old driver installed, and I was unable to connect the Arduino IDE to the Arduino Nano 33 IoT over the USB port, the expected serial port did not appear in the macOS device list when I connected the device to the USB port on my iMac. So, I deleted the old driver I had installed, and rebooted. Still the expected serial port did not appear when the device was connected.

Is it sufficient to simply delete the old driver I installed? Will that cause the macOS Ventura CH340 driver to load? Or will it be necessary for me to somehow reinstall the original Ventura driver?

Any thoughts on what is the second most common problem? I landed on this thread after going in circles for a while trying to get a connection. OS was re-installed from scratch (fully reformatted disk) a few months ago, and I’m 100% sure I haven’t installed any older drivers since then. Running Ventura 13.2.1 (22D68). The OS is recognizing that there’s a USB serial device, but I’m constantly getting “Device not configured” failures.

Can you describe the complete context:

  • What hardware do you use? What exact version of the CH340 does it use?
  • What do you want to use the serial device for? Uploading firmware? Output from device?
  • What action results in the message “Device not configured”? Where and how is this message shown?
  • Have you configured the device path for the serial device somewhere (e.g. in platformio.ini)? If so, what’s the exact path?
  • What does ls -l /dev/cu.* show?
  • Can you provide a screenshot of the USB section of the System Information application in macOS (click on Hardware / USB)?

What hardware do you use? What exact version of the CH340 does it use?
CH340G

What do you want to use the serial device for? Uploading firmware? Output from device?
I want to upload Tasmota firmware to a Tuya TYWE3S module that contains an Espressif 8266. Espressif supplies a tool (esptool.py) to do the upload. At this point, I’m trying only a few simple read commands to try to get anything at all from the device, and getting nothing at all. The simple commands include reading the chip id, reading the mac address, reading the flash id. None work. I can occasionally see the Rx light on the USB serial device flash a few times, but have yet to get any readable bytes. Dropping all the way down to screen rather than using the tool is also getting me nothing - screen exits as soon as I apply power to the Tuya module.

What action results in the message “Device not configured”? Where and how is this message shown?
Pretty much all commands try for a while, then end with that message. It shows up on the command line in the output from esptool.py. The message says it’s coming from serial.py.

Have you configured the device path for the serial device somewhere (e.g. in platformio.ini)? If so, what’s the exact path?
No, it’s used as a command-line argument. The path is /dev/cu.usbserial-1460. The number changes depending on which USB port I’m using, I’ve tried a few both direct and via an attached hub. No apparent differences. The attached hub can supply more power to the USB port than my laptop, which is why I tried it for a few attempts. No differences in the result.

What does ls -l /dev/cu.* show?
crw-rw-rw- 1 root wheel 0x16000005 Mar 27 10:00 /dev/cu.BLTH
crw-rw-rw- 1 root wheel 0x16000009 Mar 27 08:16 /dev/cu.Bluetooth-Incoming-Port
crw-rw-rw- 1 root wheel 0x16000007 Mar 27 08:16 /dev/cu.Headphones
crw-rw-rw- 1 root wheel 0x16000003 Mar 27 08:15 /dev/cu.URT1
crw-rw-rw- 1 root wheel 0x16000001 Mar 27 08:15 /dev/cu.URT2
crw-rw-rw- 1 root wheel 0x1600000b Mar 27 10:00 /dev/cu.usbserial-1460

If I unplug the serial device, all remain the same except the usbserial device disappears. No surprise there.

Can you provide a screenshot of the USB section of the System Information application in macOS (click on Hardware / USB)?

USB Serial:

Product ID: 0x7523
Vendor ID: 0x1a86
Version: 2.64
Speed: Up to 12 Mb/s
Location ID: 0x14600000 / 5
Current Available (mA): 500
Current Required (mA): 98
Extra Operating Current (mA): 0

Additional details:

The esptool does allow for setting lower speeds. Default is supposed to be 115200, but it also fails in the exact same ways if I set it down to 9600.

I do have GPIO0 held to ground on the Tuya device. At someone else’s suggestion, also pulled GPIO5 down to ground, but it didn’t help. To confirm I haven’t bricked the Tuya device, I reassembled it and the original factory firmware is still there and still works.

My laptop is a 2017 MacBook Pro

The exact serial hardware with the CH340G:

To the best of my understanding, the problem is related to communication between your Mac and the USB-to-serial adapter. So possible causes are:

  • driver issue (unlikely according to your description)
  • the serial port is already open in another software
  • the USB cable isn’t defective (though it seems to partially work)
  • invalid connections with the Tuya module negatively affects the power supply of the USB-to-serial adapter

To make progress, I propose you make the following test:

  • Disconnect the Tuya module from the USB-to-serial adapter
  • On the USB-to-serial adapter, connect to RXD pin to the TXD pin (loopback setup)
  • Run screen /dev/cu.usbserial-1460 115200 from the command line

Possibly, you now get an error. If so, let use know the error message.

If no error appears and you now type characters, they should appear. If not, let us know.

(Type CTRL-A, then CTRL-\ to exit screen.)

Hi Manuel,
I was wondering if you can help me. I am running
MacBook Pro 2.2 GHz 6-Core Intel Core i7
OSX 13.3.1 (a) (22E772610a) (Ventura)

Whether I connect my UNO or not the only driver I can see is cu.BLTH
I was expecting to see cu.usbserial or similar.

My UNO is running the CH340 chip so I need a driver loaded in my MacBook.

How do verify and load the CH340 driver?
I used ‘kmutil showloaded’ to get a list of loaded USB kernel extensions;
com.apple.driver.usb.AppleUSBCommon
com.apple.driver.usb.AppleUSBXHCI
com.apple.driver.usb.AppleUSBXHCIPCI
com.apple.driver.usb.AppleUSBHostPacketFilter
com.apple.driver.usb.AppleUSBVHCICommon
com.apple.driver.usb.AppleUSBVHCI
com.apple.driver.usb.AppleUSBVHCICommonBCE
com.apple.driver.usb.AppleUSBVHCIBCE
com.apple.driver.usb.AppleUSBHostCompositeDevice
com.apple.driver.usb.networking
com.apple.driver.usb.cdc
com.apple.driver.usb.cdc.ncm
com.apple.driver.usb.cdc.ecm
com.apple.driver.usb.IOUSBHostHIDDevice
com.apple.driver.usb.AppleUSBUserHCI

But none seem to relate to serial USB or CH340.
What should I see and how can I possibly manually insert into kernel?

Regards,

Does the UNO appear in the System Information application (section Hardware / USB)? If not, it’s likely an electrical problem such as a charge-only USB cable, a damaged USB connector or cable.

If the UNO appears, what product and vendor ID does it have?

You can also watch the Mac’s log to see what the operating system does:

  • Start the application Console
  • Click “Start” in the toolbar
  • Connect the UNO
  • Click “Stop” in the toolbar
  • Enter “USB” into the search field
  • Read through the log. Possibly you can spot a helpful error message.

When I connect a device with the CH340 chip, I can see this snippet:

<Missing Description>	default	21:04:27.446027+0200	kernel	CP2102 USB to UART Bridge Controller@00140000: IOUSBHostDevice::setConfigurationGated: AppleUSBHostCompositeDevice selected configuration 1
<Missing Description>	default	21:04:27.452266+0200	kernel	Driver com.apple.DriverKit-AppleUSBSLCOM has crashed 0 time(s)
<Missing Description>	default	21:04:27.452332+0200	kernel	DK: AppleUSBSLCOM-0x1000338e8 waiting for server com.apple.driverkit.AppleUSBSLCOM-1000338e8
<Missing Description>	default	21:04:27.452236+0200	kernelmanagerd	Received kext load notification: com.apple.DriverKit-AppleUSBSLCOM
<Missing Description>	default	21:04:27.453191+0200	kernelmanagerd	Found 1 dexts with bundle identifier com.apple.DriverKit-AppleUSBSLCOM
<Missing Description>	default	21:04:27.453358+0200	kernelmanagerd	Using unique id 52dab1372e20cae024f06d267e9951447186cd27990d52ff990d2b9cffba6ce9 to pick dext matching bundle identifier com.apple.DriverKit-AppleUSBSLCOM
<Missing Description>	default	21:04:27.453679+0200	kernelmanagerd	Picked matching dext for bundle identifier com.apple.DriverKit-AppleUSBSLCOM: Dext com.apple.DriverKit-AppleUSBSLCOM v1 in executable dext bundle com.apple.DriverKit-AppleUSBSLCOM at /System/Library/DriverExtensions/com.apple.DriverKit-AppleUSBSLCOM.dext
<Missing Description>	default	21:04:27.453783+0200	kernelmanagerd	Launching driver extension: Dext com.apple.DriverKit-AppleUSBSLCOM v1 in executable dext bundle com.apple.DriverKit-AppleUSBSLCOM at /System/Library/DriverExtensions/com.apple.DriverKit-AppleUSBSLCOM.dext

As you can see, the driver is loaded the moment the device is connected. And I don’t think kmutil will list it at all as the driver isn’t a kernel extension anymore but a user-space driver extension.

Like the others, I’m having problems with the port for Arduino UNO showing up. I tried on both Mac Mini M1 and Macbook Air M1 to no avail. I tried to do your suggestion to run Console and plug in the Uno. Once I did, this is the first thing that appeared on the Console when the UNO was plugged:

error	02:23:25.816276+0800	kernel	airportd@(null): AppleUSBHostUserClient::closeGated: trying to close a non-opened client
error	02:23:25.821003+0800	com.apple.ifdreader	Failed to find AppleUSBAlternateServiceRegistryID.
error	02:23:25.825277+0800	kernel	systemstats@(null): AppleUSBHostUserClient::closeGated: trying to close a non-opened client
default	02:23:25.896363+0800	kernel	usb-drd1-port-ss@01200000: AppleUSBHostPort::terminateDevice: destroying 0x2109/0813/0221 (USB3.0 Hub             ): link change interrupt

What appears in System Information in the USB section?

What kind of Arduino UNO do you have? A genuine one? Or a clone (with a CH340 or similar USB-to-serial converter)?

The log extract mentions a card reader (do you have something like this?) and USB hub (are you using one to connect the Ardunio UNO to your Mac?). Nothing indicates an Arduino UNO or a serial device.

I’m not sure if the Arduino I have is genuine but based on the card’s design, it’s this Arduino UNO version: https://docs.arduino.cc/hardware/uno-rev3-smd. I didn’t buy this directly from Arduino and I assume it’s a Chinese made clone.

For the port, I don’t have a card reader but I do use a USB Hub since I’m using a MacBook Air M1 and the only port available is a USB-C Port. However, when I plug it in to my Mac Mini’s main USB-A Port, nothing appears on that particular port. I also get this Console log when I plug In the Arduino Uno:

default	16:47:19.691312+0800	bluetoothd	Current NF value -86, current USB detected 6
default	16:47:19.693876+0800	osascript	[0x6000007f00f0] activating connection: mach=true listener=false peer=false name=com.apple.cfprefsd.daemon
default	16:47:19.694015+0800	osascript	[0x6000007f01e0] activating connection: mach=true listener=false peer=false name=com.apple.cfprefsd.agent
default	16:47:19.694084+0800	cfprefsd	[0x117f187d0] activating connection: mach=false listener=false peer=true name=com.apple.cfprefsd.daemon.peer.0x117f187d0
default	16:47:19.694222+0800	cfprefsd	[0x132419c50] activating connection: mach=false listener=false peer=true name=com.apple.cfprefsd.agent.peer.0x132419c50
error	16:47:19.694441+0800	cfprefsd	Couldn't open parent path due to [2: No such file or directory]
error	16:47:19.694585+0800	cfprefsd	Couldn't open parent path due to [2: No such file or directory]
error	16:47:19.694998+0800	cfprefsd	Couldn't open parent path due to [2: No such file or directory]
error	16:47:19.702971+0800	kernel	AppleEmbeddedUSBXHCIFL1100@02000000: AppleUSBHostController::io: request <private> completed with 0xe0005000
error	16:47:19.703526+0800	kernel	AppleEmbeddedUSBXHCIFL1100@02000000: AppleUSBHostController::io: request <private> completed with 0xe0005000
default	16:47:19.723076+0800	kernel	disk5: I/O error.

What do you mean with “nothing appears on that particular port”? Where do you expect something to appear?

And again: What appears in the System Information application?

The log from Console is suspiciously short and doesn’t contain any useful information. At the moment, it looks like an electrical problem (charge only USB cable, partially broken or loose USB connector etc.)

I have a ESP32 CH340C that I got on ebay. That got me to this link.

I checked system information, nothing showed up. I then used this usb c hub that I use to get an ethernet rj45 jack, and it also has 3 usb A ports on it. They say USB3.0. In system infoformation it shows:

image

So it seems that these esp32 boards are usb 2.0 and per the apple page: If a USB device doesn’t work with Mac - Apple Support

" Check the USB hub:* If the device is connected to a USB hub, make sure the device and the hub are the same speed. Connect USB 3.0 SuperSpeed devices to a USB 3.0 SuperSpeed HUB, USB 2.0 Hi-Speed devices to a USB 2.0 Hi-Speed hub, and so on."