I just recently bought a ELM327 USB adapter to do some computer changes to my 2018 f150 and am currently a mac user for my primary home laptop. Figured I would throw a "How To" post together for this since I had not come across one yet for this particular hardware/software setup. The computer I was able to get this working on was a 2021 Macbook pro with M1 Pro SOC (apple silicon) via USB-C Thunderbolt since this computer does not have USB-A ports. Most similar hardware/MacOS software configurations should work with this setup.
1. First you will need a Forscan compatible USB ODB ELM327 reader. Here is the link to the one i purchased on Amazon Prime.
https://www.amazon.com/Forscan-Scanner- ... 162&sr=8-5
Make sure if you get one it has the MS-CAN/HS-CAN switch on it.
2. My Macbook pro does not have full sized USB-A ports, so I had to use a USB-A to USB-C converter adapter. I have a Galaxy work phone that came with a USB-C to USB-A adapter so that is what i used but theoretically really any of these should work.
https://www.amazon.com/Syntech-Adapter- ... 102&sr=8-3
3. Plug your ELM327 adapter into your computer and open a terminal window in mac OS. (spotlight search > type in "terminal")
Type the following command in your terminal screen:
ls /dev | grep -i 'tty.'
You should see output similar to the below screenshot:
https://imgur.com/a/mh4bgWO
It is CRITICAL to note that if you plug your forscan tool into the different usb ports on your mac, it will assign it a new name in /dev depending on what port the device is plugged. I suggest you plug the device into every port on your mac and make a note of its device name on each port because this will impact steps we need to perform in later steps on this guide.
You have now validated that the USB serial device is visible and mounted in /dev in MacOS. Make a note of the name of the device mounted under /dev for later steps in this guide. On mine, the name for each port is "/dev/tty.usbserial-210", "/dev/tty.usbserial-110", and "/dev/tty.usbserial-10" depending on which usb port i plug the device into on my mac.
4. Now we need to figure out which USB UART Chip is installed in your ELM327 reader. To do this, click the apple on the top left of your screen, go to "about this mac", and at the bottom select "System Report." On the left hand side of the system report, there is a section called USB. My mac has 3 USB-C Thunderbolt ports, so depending on how many ports your computer has and which port is connected to will determine where the device is listed. You should see an entry called "USB Serial" under one of your USB ports. Click on USB serial and you should see some information about that USB Serial device. We need the "Product ID" and "Vendor ID" codes from this screen. This will determine what driver you will need to install on MacOS for Mac to be able to translate this device into windows with USB passthrough in later steps. For my particular ELM327 reader, the Vendor ID is 0x7523 and the Product ID is 0x1a86.
See below screenshot as an aid if needed:
https://imgur.com/a/GkfJ98z
5. Once you have your product/vendor id, do a Google search for the 4 characters at the end of the ID to figure out which USB UART chip manufacturer you have. For my current reader, the UART chip model for Vendor ID 7523 and product ID 1a86 was CH340/CH341. If you happen to have this same setup, here is a download link to the MacOS driver. (Yes the website is in Chinese, use google chrome to translate the web page to english to find the big blue download button).
http://www.wch.cn/downloads/CH341SER_MAC_ZIP.html
There is an included read me PDF included in the above zip file for step by step instructions to install this. Unzip the above file and run the installer. It should open after installing, but if it doesn't, then open the app which should be in your applications folder "CH34xVCPDriver". A small popup comes up which prompts you to "install" a system extension. MacOS usually doesn't like these so make sure you allow the new system extension in your system preference when it pops up.
6. Now we need to install the Windows based Forscan on mac. There are plenty of tutorials and how-To's on how to do this with MacOS or OSX with a variety of tools such as Parallels, VMware, etc. I am using Crossover/wine for this example. Go to the Crossover download page for mac and install it from the below link There is a free trial and a paid version. Either version works, it is your discretion if you want to pay for a full copy or use a trial copy. One important thing to note, crossover is not M1 native yet so you will have to use Rosetta to emulate intel instruction set for this to run on Apple M1 Silicon systems.
https://www.codeweavers.com/crossover/download
7. Once you have Crossover installed, now you need to download Forscan for Windows (download link below). Download the .exe from here:
https://forscan.org/download.html
Once you have downloaded the .exe installer, execute it from your mac. Crossover should detect a windows installer and guide you through a windows installer. Once you have Forscan installed, validate that you are able to open it.
8. Once Forscan is validated working on your MacOS, now we need to make some Windows registry modifications to allow for serial usb passthrough from macOS to wine/crossover so that Forscan can see your USB scanner. First, go back to your terminal in MacOS and type the following command to allow access to serial devices in macOS outside of only root user:
sudo chmod 777 /var/spool/uucp
(if you are not familiar with linux shell, sudo will ask for root user password. in Mac this is usually the password you use to log into your computer with if you are an administrative user. You will not see the characters type in the terminal as you type it so make sure you get it correct.)
Now, go to Crossover on your Mac. At the top of your MacOS Menu bar, with Crossover selected, select "Bottle" and in the Bottle dropdown click "Run command." Then type in the run command box "regedit". This will pull up the Windows System Registry Editor within Crossover. Navigate to the following registry area:
HKEY_LOCAL_MACHINE > Software > Wine > Ports. If it does not exist already, create a new key and name it "Ports". In the ports registry folder, you should see just one default value.
At the top of the regedit screen, click Edit>New> and create a new String Value. Name this new String COM1 (or similar). Repeat this two more times and make a COM2 and COM3 (or whatever number incrementing convention you prefer). Right click it and select each, modify, and add the path to your MacOS serial devices in Step 3 above in this doc as the value data. Doing this this way ensures that if you plug in your scanner to a different usb port, it will still function. See below screenshot as an aid:
https://imgur.com/a/4sDy478
9. Close out of regedit, and fully close out of Forscan.exe and fully quit out of crossover on MacOS. Re-launch Crossover and re-launch the forscan.exe from within crossover. In Forscan, go to the settings wheel on the bottom and validate that you have the following settings set:
https://imgur.com/a/4sDy478
You should end up with a success message similar to below when reading your ELM adapter when connecting to your Forscan similar to below now!
https://imgur.com/a/8AScfLO
(I did not have my computer connected to my truck when i took this screenshot but have validated that i can read my trucks computer using this method)
The general process flow is below. Its jank but it works
USBc to usbA Dongle
emulating USB Com Serial over thunderbolt usbC
using special driver to allow thunderbolt mac ports to let serial work over them
emulating windows based forscan on mac os with crossover via wine
crossover isnt m1 native yet, so rosetta emulating intel instructionset.
within wine, have to create a windows registry modification to map serial com to linux /dev/usbserial device