2017-04-07 09:11:36 +08:00
Welcome to panda
======
2017-06-29 13:20:38 +08:00
[panda ](http://github.com/commaai/panda ) is the nicest universal car interface ever.
2017-04-07 09:11:36 +08:00
2019-01-03 14:00:21 +08:00
< a href = "https://comma.ai/shop/products/panda-obd-ii-dongle" > < img src = "https://github.com/commaai/panda/blob/master/panda.png" >
2017-04-07 09:56:25 +08:00
2017-07-07 14:37:14 +08:00
< img src = "https://github.com/commaai/panda/blob/master/buy.png" > < / a >
2017-07-07 14:30:20 +08:00
2017-06-29 13:21:20 +08:00
It supports 3x CAN, 2x LIN, and 1x GMLAN. It also charges a phone. On the computer side, it has both USB and Wi-Fi.
2017-04-07 09:11:36 +08:00
2017-06-29 13:22:12 +08:00
It uses an [STM32F413 ](http://www.st.com/en/microcontrollers/stm32f413-423.html?querycriteria=productId=LN2004 ) for low level stuff and an [ESP8266 ](https://en.wikipedia.org/wiki/ESP8266 ) for Wi-Fi. They are connected over high speed SPI, so the panda is actually capable of dumping the full contents of the busses over Wi-Fi, unlike every other dongle on amazon. ELM327 is weak, panda is strong.
2017-04-07 09:11:36 +08:00
It is 2nd gen hardware, reusing code and parts from the [NEO ](https://github.com/commaai/neo ) interface board.
2018-04-08 01:05:30 +08:00
[![CircleCI ](https://circleci.com/gh/commaai/panda.svg?style=svg )](https://circleci.com/gh/commaai/panda)
2017-11-13 07:31:25 +08:00
2018-05-10 04:18:53 +08:00
Usage (Python)
2017-04-07 09:14:15 +08:00
------
2017-04-07 09:23:26 +08:00
2017-06-21 06:40:34 +08:00
To install the library:
```
# pip install pandacan
```
2017-12-14 07:24:57 +08:00
See [this class ](https://github.com/commaai/panda/blob/master/python/__init__.py#L80 ) for how to interact with the panda.
2017-04-07 09:23:26 +08:00
For example, to receive CAN messages:
```
2017-06-21 02:30:35 +08:00
>>> from panda import Panda
2017-04-07 09:28:59 +08:00
>>> panda = Panda()
2017-04-07 09:23:26 +08:00
>>> panda.can_recv()
```
2017-04-07 09:28:59 +08:00
And to send one on bus 0:
```
>>> panda.can_send(0x1aa, "message", 0)
```
2018-03-14 00:47:39 +08:00
Find user made scripts on the [wiki ](https://community.comma.ai/wiki/index.php/Panda_scripts )
2017-04-07 09:14:15 +08:00
2018-05-10 04:18:53 +08:00
Usage (JavaScript)
-------
See [PandaJS ](https://github.com/commaai/pandajs )
2017-06-26 14:01:41 +08:00
Software interface support
------
As a universal car interface, it should support every reasonable software interface.
2018-07-13 01:08:34 +08:00
- [User space ](https://github.com/commaai/panda/tree/master/python )
- [socketcan in kernel ](https://github.com/commaai/panda/tree/master/drivers/linux ) (alpha)
- [ELM327 ](https://github.com/commaai/panda/blob/master/boardesp/elm327.c )
- [Windows J2534 ](https://github.com/commaai/panda/tree/master/drivers/windows )
2017-06-26 14:01:41 +08:00
2017-04-07 09:11:36 +08:00
Directory structure
------
- board -- Code that runs on the STM32
- boardesp -- Code that runs on the ESP8266
2017-06-26 14:01:41 +08:00
- drivers -- Drivers (not needed for use with python)
2017-12-07 08:17:57 +08:00
- python -- Python userspace library for interfacing with the panda
2017-04-07 09:11:36 +08:00
- tests -- Tests and helper programs for panda
2017-04-07 09:30:45 +08:00
Programming (over USB)
2017-04-07 09:11:36 +08:00
------
2017-11-10 18:27:25 +08:00
[Programming the Board (STM32) ](board/README.md )
[Programming the ESP ](boardesp/README.md )
2017-04-07 09:11:36 +08:00
2017-04-18 06:28:28 +08:00
Debugging
------
To print out the serial console from the STM32, run tests/debug_console.py
2017-04-29 15:09:08 +08:00
To print out the serial console from the ESP8266, run PORT=1 tests/debug_console.py
2017-07-18 01:48:16 +08:00
Safety Model
------
When a panda powers up, by default it's in "SAFETY_NOOUTPUT" mode. While in no output mode, the buses are also forced to be silent. In order to send messages, you have to select a safety mode. Currently, setting safety modes is only supported over USB.
Safety modes can also optionally support "controls_allowed", which allows or blocks a subset of messages based on a piece of state in the board.
2017-04-07 09:23:26 +08:00
Hardware
------
2017-04-28 11:32:16 +08:00
2017-04-07 09:23:26 +08:00
Check out the hardware [guide ](https://github.com/commaai/panda/blob/master/docs/guide.pdf )
2017-04-07 09:11:36 +08:00
Licensing
------
2017-04-07 09:53:43 +08:00
panda software is released under the MIT license unless otherwise specified.