X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=readme.rst;h=5aa6b52437e39179cae53945d405cc61a1b868f3;hb=4521b320c3c07207f76fe3b6be0d49b404cf717f;hp=23920d828885a8505b59918753a3df7619957a03;hpb=8376bf6ff844f12088f568d2284a4ef4a69ca9c4;p=elmcan.git diff --git a/readme.rst b/readme.rst index 23920d8..5aa6b52 100644 --- a/readme.rst +++ b/readme.rst @@ -1,35 +1,36 @@ -Linux SocketCAN driver for ELM327 +ELM327 driver for Linux SocketCAN ================================== Authors -------- -Max Staudt +Max Staudt Motivation ----------- -CAN adapters are expensive, few, and far between. -ELM327 interfaces are cheap and plentiful. - This driver aims to lower the initial cost for hackers interested in working with CAN buses. +CAN adapters are expensive, few, and far between. +ELM327 interfaces are cheap and plentiful. +Let's use ELM327s as CAN adapters. + Introduction ------------- This driver is an effort to turn abundant ELM327 based OBD interfaces -into full-fledged (as far as possible) CAN interfaces. +into full fledged (as far as possible) CAN interfaces. -Since the ELM327 was never meant to be a stand-alone CAN controller, -the driver has to switch between its modes asa quickly as possible in -order to approximate full-duplex operation. +Since the ELM327 was never meant to be a stand alone CAN controller, +the driver has to switch between its modes as quickly as possible in +order to fake full-duplex operation. -As such, elmcan is a best-effort driver. However, this is more than +As such, elmcan is a best effort driver. However, this is more than enough to implement simple request-response protocols (such as OBD II), and to monitor broadcast messages on a bus (such as in a vehicle). @@ -43,6 +44,21 @@ known limitations in older controllers and clones. +Requirements +------------- + +This requires Linux 4.11 (for 431af779256c), and has been tested on 4.19. + +Also, elmcan depends on ``can-dev``: + + sudo modprobe can-dev + +Install +------------- + cd module/ + + sudo dkms install . + Data sheet ----------- @@ -56,6 +72,7 @@ How to check the controller version ------------------------------------ Use a terminal program to attach to the controller. +The default settings are 38400 baud/s, 8 data bits, no parity, 1 stopbit. After issuing the "``AT WS``" command, the controller will respond with its version:: @@ -67,6 +84,9 @@ its version:: > +Note that clones may claim to be any version they like. +It is not indicative of their actual feature set. + How to attach the line discipline @@ -98,8 +118,10 @@ Module parameters - ``accept_flaky_uart`` - Try to live with a bad controller or UART line Some adapters and/or their connection are unreliable. Enable this - option to try and work around the situation. This is a best-effort + option to try and work around the situation. This is a best effort workaround, so undefined behavior will likely occur sooner or later. + Without this option, the driver will bail on the first unrecognized + character it receives from the TTY. LOAD TIME:: @@ -110,7 +132,7 @@ Module parameters Known limitations of the controller ------------------------------------ -- Clone "v1.5" devices +- Clone devices ("v1.5" and others) Sending RTR frames is not supported and will be dropped silently. @@ -128,8 +150,8 @@ Known limitations of the controller - All versions - No automatic full duplex operation is supported. The driver will - switch between input/output mode as quickly as possible. + No full duplex operation is supported. The driver will switch + between input/output mode as quickly as possible. The length of outgoing RTR frames cannot be set. In fact, some clones (tested with one identifying as "``v1.5``") are unable to @@ -308,9 +330,21 @@ Rationale behind the chosen configuration -To Do list for future development ----------------------------------- +A note on CAN bus termination +------------------------------ + +Your adapter may have resistors soldered in which are meant to terminate +the bus. This is correct when it is plugged into a OBD-II socket, but +not helpful when trying to tap into the middle of an existing CAN bus. + +If communications don't work with the adapter connected, check for the +termination resistors on its PCB and try removing them. + + + +Thanks +------- -- DMA capable rx/tx buffers +Thanks go out to Oliver Neukum for his early reviews and suggestions. -- flushing of ``tx_work`` is too late in ``ldisc_close()`` +Several more people have encouraged me to finish this - thank you all.