You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							144 lines
						
					
					
						
							7.5 KiB
						
					
					
				
			
		
		
	
	
							144 lines
						
					
					
						
							7.5 KiB
						
					
					
				| ```
 | |
|                                                                                                         ;"   ^;     ;'   ",
 | |
| ______/\\\\\\\\\\\____/\\\\\\\\\_______/\\\\\\\\\\\\\\\______/\\\\\\\\\\_____________/\\\____           ;    s$$$$$$$s     ;
 | |
|  _____\/////\\\///___/\\\///////\\\____\/\\\///////////_____/\\\///////\\\__________/\\\\\____          ,  ss$$$$$$$$$$s  ,'
 | |
|   _________\/\\\_____\///______\//\\\___\/\\\_______________\///______/\\\_________/\\\/\\\____         ;s$$$$$$$$$$$$$$$
 | |
|    _________\/\\\_______________/\\\/____\/\\\\\\\\\\\\_____________/\\\//________/\\\/\/\\\____        $$$$$$$$$$$$$$$$$$
 | |
|     _________\/\\\____________/\\\//______\////////////\\\__________\////\\\_____/\\\/__\/\\\____      $$$$P""Y$$$Y""W$$$$$
 | |
|      _________\/\\\_________/\\\//____________________\//\\\____________\//\\\__/\\\\\\\\\\\\\\\\_     $$$$  p"$$$"q  $$$$$
 | |
|       __/\\\___\/\\\_______/\\\/____________/\\\________\/\\\___/\\\______/\\\__\///////////\\\//__    $$$$  .$$$$$.  $$$$
 | |
|        _\//\\\\\\\\\_______/\\\\\\\\\\\\\\\_\//\\\\\\\\\\\\\/___\///\\\\\\\\\/_____________\/\\\____  _ $$$$$$$$$$$$$$$$
 | |
|         __\/////////_______\///////////////___\/////////////_______\/////////_______________\///_____| |  "Y$$$"*"$$$Y"
 | |
|                                                                                 _ __   __ _ _ __   __| | __ _"$b.$$"
 | |
|                                                                                | '_ \ / _` | '_ \ / _` |/ _` |
 | |
|                                                                                | |_) | (_| | | | | (_| | (_| |
 | |
|                                                                                | .__/ \__,_|_| |_|\__,_|\__,_|
 | |
|                                                                                | |     A comma.ai product.
 | |
|                                                                                |_| (Code by Jessy Diamond Exum)
 | |
| ```
 | |
| 
 | |
| 
 | |
| # Installing J2534 driver:
 | |
| 
 | |
| [Download](https://github.com/commaai/panda/files/1742802/panda.J2534.driver.install.zip)
 | |
| 
 | |
| Depending on what version of windows you are on, you may need to separately install the WinUSB driver (see next section).
 | |
| 
 | |
| # Installing WinUSB driver:
 | |
| 
 | |
| Installation automatically happens for Windows 8 and Windows 10 because the panda
 | |
| firmware contains the USB descriptors necessary to auto-install the WinUSB driver.
 | |
| 
 | |
| Windows 7 will not auto-install the WinUSB driver. You can use Zadig to install
 | |
| the WinUSB driver. This software is not tested on anything before 7.
 | |
| 
 | |
| More details here:
 | |
| [WinUSB (Winusb.sys) Installation](https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/winusb-installation)
 | |
| [WCID Devices](https://github.com/pbatard/libwdi/wiki/WCID-Devices)
 | |
| [Zadig for installing libusb compatible driver](https://github.com/pbatard/libwdi/wiki/Zadig)
 | |
| 
 | |
| # Using J2534:
 | |
| 
 | |
| After installing the J2534 drivers for the panda, you can do... nothing.
 | |
| You first need to get a J2534 client that can load the drivers and talk to
 | |
| the panda for you.
 | |
| 
 | |
| A simple tool for testing J2534 drivers is DrewTech's 'J2534-1 Bus Analysis
 | |
| Tool' available in the 'Other Support Applications' section of their
 | |
| [Download Page](http://www.drewtech.com/downloads/).
 | |
| 
 | |
| # What is J2534?
 | |
| 
 | |
| J2534 is an API that tries to provide a consistent way to send/receive
 | |
| messages over the many different protocols supported by the OBD II
 | |
| port. The place this is perhaps most obvious, is sending data over
 | |
| different protocols (each using unique packetizing methods) using the
 | |
| same data format.
 | |
| 
 | |
| For each PassThru Device that should be used with J2534 (in this case,
 | |
| the panda), a 'driver' has to be written that can be loaded by a
 | |
| client application wanting to send/receive data.
 | |
| 
 | |
| A lot of J2534 has good ideas behind it, but the standard has some odd choices:
 | |
| 
 | |
| * Platform Locked: Requires using the Windows Registry to find installed J2534 libraries/drivers. Drivers have to be DLLs.
 | |
| * Architecture Locked: So far there is only support for x86.
 | |
| * No device autodetect, and poor support for selecting from multiple devices.
 | |
| * Constant vague language about important behavior (small differences between vendors).
 | |
| * Most common differences become standard in later revisions.
 | |
| 
 | |
| # Why use J2534 with the panda?
 | |
| 
 | |
| J2534 is the only interface supported by most professional grade
 | |
| vehicle diagnostics systems (such as HDS). These tools are useful for
 | |
| diagnosing vehicles, as well as reverse engineering some lesser known
 | |
| features.
 | |
| 
 | |
| # What parts are supported with panda?
 | |
| 
 | |
| - [ ] **J1850VPW** *(Outdated, and not physically supported by the panda)*
 | |
| - [ ] **J1850PWM** *(Outdated, and not physically supported by the panda)*
 | |
| - [X] **CAN**
 | |
| - [X] **ISO15765**
 | |
| - [ ] **ISO9141** *(This protocol could be implemented if 5 BAUD init support is added to the panda.)*
 | |
| - [ ] **ISO14230/KWP2000** *(Could be supported with FAST init, 5baud init if panda adds support for 5bps serial)*
 | |
| 
 | |
| # Building the Project:
 | |
| 
 | |
| This project is developed with Visual Studio 2017, the Windows SDK,
 | |
| and the Windows Driver Kit (WDK).
 | |
| 
 | |
| The WDK is only required for creating the signed WinUSB inf file. The
 | |
| WDK may also provide the headers for WinUSB.
 | |
| 
 | |
| To build all the projects required for the installer, in Visual
 | |
| Studio, select **Build->Batch Build.** In the project list select:
 | |
| 
 | |
| - **"panda"** *Release|x86*
 | |
| - **"panda"** *Release|x64*
 | |
| - **"panda Driver Package"** Debug|x86 (Note this inf file works with x86/amd64).
 | |
| - **"pandaJ2534DLL"** *Release|x86*
 | |
| 
 | |
| The installer is generated with [NullSoft NSIS](http://nsis.sourceforge.net/Main_Page).
 | |
| Use NSIS to run panda_install.nsi after building all the required projects.
 | |
| 
 | |
| Before generating the installer, you must go to copy vscruntimeinfo.nsh.sample to
 | |
| vscruntimeinfo.nsh and follow the instructions to bundle in the Visual Studio C
 | |
| Runtime required by your version of Visual Studio. Without this runtime, the panda
 | |
| code will not work, so without this file, the installer will refuse to build.
 | |
| 
 | |
| # Developing:
 | |
| 
 | |
| - Edit and merge pandaJ2534DLL\J2534register_x64.reg to register your development J2534 DLL.
 | |
| - Add your output directory (panda\drivers\windows\Debug_x86) to your system PATH to avoid insanity.
 | |
| 
 | |
| # ToDo Items:
 | |
| 
 | |
| - Apply a style-guide and consistent naming convention for Classes/Functions/Variables.
 | |
| - Send multiple messages (each with a different address) from a given connection at the same time.
 | |
| - Implement ISO14230/KWP2000 FAST (LIN communication is already supported with the raw panda USB driver).
 | |
| - Find more documentation about SW_CAN_PS (Single Wire CAN, aka GMLAN).
 | |
| - Find example of client using a _PS version of a protocol (PS is pin select, and may support using different CAN buses).
 | |
| 
 | |
| 
 | |
| # Known Issues:
 | |
| 
 | |
| - ISO15765 Multi-frame TX: Hardware delays make transmission overshoot
 | |
|   STMIN by several milliseconds. This does not violate the requirements
 | |
|   of STMIN, it just means it is a little slower than it could be.
 | |
| 
 | |
| - All Tx messages from a single Connection are serialized. This can be
 | |
|   relaxed to allow serialization of messages based on their address
 | |
|   (making multiple queues, effectively one queue per address).
 | |
| 
 | |
| # Troubleshooting:
 | |
| troubleshooting:
 | |
| 1. Install DrewTech J2534-1 Bus Analysis Tool
 | |
| http://www.drewtech.com/downloads/tools/Drew%20Technologies%20Tool%20for%20J2534-1%20API%20v1.07.msi
 | |
| 2. Open DrewTech tool and make sure it shows "panda" as a device listed (this means registry settings are correct)
 | |
| 3. When DrewTech tool attempts to load the driver it will show an error if it fails
 | |
| 4. To figure out why the driver fails to load install Process Monitor and filter by the appropriate process name
 | |
| https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
 | |
| 
 | |
| # Other:
 | |
| Panda head ASCII art by dcau |