About CAN Bus. Auterra's Windows PC, Android and DashDyno SPD scan tools support all five OBD II protocols including the newest CAN bus protocol. CAN bus equipped vehicles started appearing in model year 2003. By model year 2008, all vehicles sold in the US must use CAN bus. CAN bus equipped vehicles started appearing in model year 2003. The following table shows 2003/2004/2005/2006/2007 model year vehicles are equipped with CAN. 2006, Toyota, Toyota, HIGHLANDER HV, 4, 6, 3.3, CVT, HEV.
Other materials:DESCRIPTIONShifting from 1st to 5th is performed in combination with 'ON' and 'OFF'operation of the shift solenoidvalves SL1, SL2, SL3, S4 and SR which are controlled by the ECM. If an open orshort circuit occurs ineither of the shift solenoid valves, the ECM cont.General maintenanceCheck the parts of the vehicle described below on a dailybasis.
Performing maintenance checks on the vehicle is theowner's responsibility. The owner may take the vehicle to aservice center but it is recommended that the owner performthe checks.In most cases, special.DTC B1793 Occupant Classification Sensor Power SupplyCircuit MalfunctionDESCRIPTIONThe occupant classification sensor power supply circuit consists of theoccupant classification ECU andthe occupant classification sensors.DTC B1793 is recorded when a malfunction is detected in the occu.
Hi there, great writeup! I am very interested in your open-usb-can project.I have different hardware, an STM32f4 with 2 can controllers, I plan to eventually use both by making my firmware present 2 USB interface descriptors.For now I have been coding firmware in the hope that I can just use your kernel module, by making my hardware appear to be the same as yours from the host’s point of view.I have got the device/interface/endpoint descriptors working, and can set the hw config, and start the interface. But I cannot figure out how you start the data flow. The urb’s callbacks in the kernel module do not seem to ever be called.I can make data go out, for a short while using cangen, but never get anything back in.I can see in the ep0.c control values that do not seem to ever be sent by the driver. But which appear to be needed to start the data flow.ATUSBSPIWRITE1/ATUSBSPIWRITE2andATUSBSPIREAD1/ATUSBSPIREAD2The Write one seems to be the only place the ep in callback gets set.Am I missing something?Are these parts of the code actually used?Thanks in advance, Dan. Hi Dan!I was actually in the process of redesigning my open-usb-can with an STM32F103, as I abandoned the AVR based design for performance reasons, but then I stalled the project to work on other stuffAnyway, I’m happy that you’re using my kernel module as a base! That’s actually quite simple because the firmware uses socketcan compatible data structures and you can easily do the same.
You may also be interested into a discussion on the linux-can list about USB-CAN protocols and maybe even join the list!The firmware code is actually based on the ATUSB Ben-WPAN project so you may find some debugging/helper code still there and not used by the kernel module, and that’s the case for the ATUSBSPI. calls – the AVR to CAN controller SPI data is not exposed on the USB side for normal operation.As for the data flow, the stuff you find in ep0.c is only for the control endpoint (&eps0), and that’s used only for device configuration/start/stop. The actual bulk traffic is handled in buffer.c, where you can find references to usbsend(&eps2, ) and usbrecv&eps1, ).
Those two maps to the two kernel queues: usbsndbulkpipe(dev-udev, 1) and usbrcvbulkpipe(dev-udev, 2) and relative callbacks.There may be a.ton. of reasons why your traffic doesn’t go trough, and you may want to double check your descriptors and the hardware USB controller configuration on the STM32, especially for the endpoint sizes.In this situation I would search for an working example project to run on the STM32 that uses bulk endpoint and adapt it to your configuration until you find what breaks. On the Linux side you can use the usbmon module to see the raw traffic. Also, one of my favorite utilities for hacking on USB is the usbtool application from the v-usb package, you can find it here hidden into the examples/usbtool directory. It allows you send and receive arbitrary USB traffic, it uses libusb internally. If you use that just keep in mind that it doesn’t flip between the DATA0/1 packet id, so it will actually work only for the first packet but that’s often enough!:-). Hi FabioI work with “PEAK-SYSTEM- CAN card ”, I can connect two can interface, I generate CAN data in one can interface and dump can data in other inteface.but I want reverse engineering on PLD engine controller and dump can data in this controller.
You can find specific of this controller in this linkbut I can not receive any data with my interface! However I can connect it with car diagnostic and receive CAN data! I try to determine output signal with oscilloscope and saw voltage level of this controller are 9 V & 12 V for CAN-H and CAN-L. But in my interface output level are -1.5 and +1.5 V.
If I can connect this controller with my interface? How I should connect this controller physically? If I should run specific command for connect and dump CAN data without “candump can0”?
Please help me:-)thanks a lot. Hi Yousef,there are many things you should check to troubleshoot the problem: first make sure that you are able to display error messages from the CAN interface (candump has some specific flags), then it may be possible that the bus you are using generates data only when triggered (check for activity with the scope). It may be useful for you to build a split cable to connect the diagnostic tool and your CAN interface at the same time, so that you can check if you receive the same data from both.For the voltage level, is actually quite high and may be saturating the transceiver. You should check which transceiver p/n is used in your CAN interface, and make sure it works with common mode voltage as high as 10V. Ideally you would also use an isolated interface (if you are on a laptop using it from the battery may be enough). Firstly, what a great post.
Thanks very much! I have quite a bit of experience with CAN, and always get the question how to read fuel consumption from many different manufacturer’s CAN bus. Yet, this signal is very difficult to reverse-engineer, I find, because many other signals (engine torque for example) look very similar. I see you have fuel usage identified on the toyota.
How could you be sure it is the right signal? Any tips will be greatly appreciated!:-) Again, thanks very much for an excellent article. Hello Marius!Thanks for the comment, I agree that most of this is very hard to reverse engineer Even after you isolated some counter, everything spins up as soon as you rev up the engine!:-)For the fuel consumption I’m afraid I found a hint on some other website for similar projects on other Toyotas, and the value seems to change together with the instant consumption on the dashboard. My first idea would be to try to see if the those two updates together but if that doesn’t work I guess you should compare with some other car diagnostic tool.Cheers!
From what I remember the only external reference I had when I wrote this was a report from some university group on another Toyota car. I remember observing something similar to what you described: some frame IDs matched but the content was slightly different, which probably reflect some different evolution of the various ECUs and the communication protocols used, or just different requirements on what data needs to be shared between ECUs.The lack of individual wheel speed may mean that the ABS unit obtains the information by some other mean other than the CANBUS.
No clue about the RPM.2 one maybe some other control signal loosely related to the engine speed.Are you going to try and do some test on the Outback? Would be curious to see what you find I would expect that car to be quite more sophisticated and have multiple buses though.:-). Nice job on decoding the CAN-frames.Now that you have a CAN-OBD-interface it would be really simple to add functionality to also log supported OBD-PIDS for your vehicleHave a look at for a very nice guide.
Basically, for the supported PIDS of your vehicle you just send a CAN-message and wait for respeonse. The list of supported PIDS is obtained by simpy asking, which is always supported (for non-electric vehicle).Example:Supported PIDs are obtained by sending a can message with 02,01,00,0,0,0,0,0, respone contains PIDS-supported.Lets say PID=0x0A (fuel pressure) is supported, just send 02,01,0A,0,0,0,0,0 and wait for response.
Response should be something like: CAN-Sender-ID=0x7E8 (message from main ecu), numBytes, 0x41, PID=0x0A, A, B, C,D, Eand actual fuel pressure is A.3 according to wikipedia. Thank you for this informative post.
Although as a medical diagnostic imaging engineer I am familiar with CAN bus, what I am working with is pretty much presented by the manufacturers in hardware and software, as is the case with OBD II and OBD II readers. Your presentation differs in that it probes down to the signal level, which then may determine if a component is actually bad or if the signal is just bad. Am I right?I wish you had described a step by step use of the “socket can” for us who are less familiar with programming.Have you done any work into hacking the other CAN bus in cars, namely the Navigation-Radio-CD changer-Telephone-etc. From following the various automotive forums there seems to be an awful lot of problems in that area. I wonder why the power train CAN is so reliable and the entertainment CAN is not. (Greater product liability?). Yes you are just about right, I would not really say “signal” though as I did not really put too much effort on electrical signals but rather at the lowest digital layer – the raw transmission and receiving of CAN frames, such as if they were IP packets.The socketcan part is actually easy if you get familiar with normal “internet” sockets before, and that is just the API used to interface applications with TCP and UDP (and more!) streams.
Hey Fabio,Hi! I am Sarthak Jain. I was currently analysing the CAN bus via ELM327. I captured some packets for window up and down. But when I replay those packets using ELM327, then I do not see any action other than flickering of ‘check engine light’. After asking some people, I came to know that the speed of ELM may be slow which is causing conflicts on the CAN bus.I came across this module –. I need to know if I send those packets using this hardware, I would not get the same problem of speed as with ELM.
Can you please comment upon this?There is one more module – ‘ECOM’ cable which is being used for hacking the CAN bus. Are you aware of this?Thank you! Hey,The speed is that of the CAN packets which I am sending via ‘pyserial’ package.Actually I am using OBD-II UART board which provides a serial interface to send and receive packets to the OBD-II bus.
I used ELM 327 AT commands to analyse the traffic, reverse-engineered some of the packets, found the ones which change when, say window go up or down. But when I replay those packets using ‘pyserial’, all I get is ‘flickering of check engine light’.By the way, USB2CAN device provides a serial interface or some other? Right, so if the OBD adapter is passing through a standard UART to communicate with the host, it may be saturating that link. I think that’s a poor design in general, but it’s particularly bad if it’s using a real UART and a converter, limited to a specific bit rate, rather than a “virtual serial” implemented directly on the USB controller. In the case of the ELM controller I guess that the design made sense since you are supposed to use it to communicate with the ELM chip using AT commands (let’s call it legacy), and that link should not require much bandwidth, but if you try to turn that into a CAN interface you are surely going to get very poor performances. None of the devices I listed in this post are implemented like that AFAIK, and all are using proper USB endpoints (and works with socketcan).That said, I doubt that’s the problem that leads to your “check engine flickering” thing, you are more likely sending wrong data or just sending something that gets quickly overridden by some other periodic frame on the bus.
Hey, yeah you are right that my data is being overridden by some other frames.I have one more question. The OBD-II UART board is having MCP2551 CAN transreceiver and STN1110 as its controller.
Clearly STN1110 is ELM based and is not CAN controller.But we can select CAN as one of its protocols and then we can talk to ecu and get sensors data. Right?It means it can talk to the CAN bus without any problem. But I guess the only issue is that of speed of the serial port which is causing trouble.I hope this trouble goes away by using USB2CAN device?Thank you! Well, the fact that you only have a CAN transceiver on the board means that the STN1110 does have a hardware CAN interface (it’s probably some commercial microcontroller pre-programmed and custom branded), and the controller can surely operate on a full-speed bus (that’s 1Mbps), but that does not immediately translate in the fact that you can use it as a generic CAN interface and transfer the whole data stream of the bus on the control interface (your serial). The serial port speed is surely the first concern on that, but that’s far from being the only limitations.
CAN based micros are designed with some kind of frame filter to be able to silently discard most data present on the bus, and only activate the CPU to process the essential frames. If you use the micro as a bus sniffer, thus opening the filters to grab the whole data stream, the micro may not even have enough power to unqueue the frames fast enough to prevent overrun, and that may even happen if the bus is lightly loaded but bursty.Those ODB chips are nice in that they can implement the OBD protocols (on top of CAN and other busses), but they are not designed to be used as a raw CAN sniffer device (access the full bus data even in heavy load or bursty conditions – which as I understand is what you are trying to achieve here). If that is what you want to do you would surely have better results with something like the USB2CAN. They give complete schematics on the website:, the setup is an MCP2551 + STR750FV2.On the lock question, hard to say, it depends how the information on the frames is interpreted it may not be that easy, and you are still racing with the frames sent by the original controller on the bus, and injecting/replying frames may or may not work depending on how the protocol is designed. The very fact that your check engine light blinks when you send stuff is telling you that something is detecting an erroneous condition on the bus (checksum?
Sequencing?) which then resolves with the normal traffic.I don’t have any literature for that, you may find something about the OBD stuff (which AFAIK is a request-response based protocol implemented on top of a pair of CAN IDs), but everything else is proprietary, vendor and model specific stuff If you find something is either leaked or reverse engineered (well, this post is about reverse engineering it after all). Hi Askshay, I think you are overestimating my abilities to see through the matrix, I can barely tell that those are extended CAN frames but that’s about it.:-)Anyway, the details you asked are not really related to that dump, those are part of the CAN framing, and does not really show up at application level. What you dumped are basically just the ID, the DLC (always 8 in your case) and the data — not sure about the last number.I don’t really have any documentation for reading.that. specific data (the frame specs are ECU specific), though if you are interested in CANBUS in general there is plenty of literature on manufacturer websites, just Google it. Akshay,I know this is a long time from your original post but I just got into Toyota’s and found this site courtesy of Google.The CAN traffic you posted is very typical of the interaction between a tester(something like a dealer scan tool, ELM327etc) and one or more modules. I think for what your looking for you don’t need to worry so much about all those things you numbered off. The things you are interested in are the Id and the data.Using your first line as an example:18DAF130 X 8 02 7E 00 55 55 55 55 55 5076The Id is 18DAF130.
The 18DA is a standard identifier for physically addressed signals(the tool is asking one module for a response). You may also see 18DB which is a way for one tool to ask all of the modules for data(functionally addressed). F1 lets you know a “tester” is asking for this information as opposed to another module onboard. 30 is the destination address. This could be any module on that particular bus(engine, trans, body, HVAC.). The X is just to let you know this is an extended message(29 bit identifier).8 is the length of the message data to follow.This is the data that you actually care about:02 7E 00 55 55 is the length of the data in this message that is significant(not counting itself)7E is a standard identifier indicating a “tester present” message00 is the “mode” for lack of a better term. There are a bunch of different modes that do different things mainly it indicates whether or not this message should be acknowledged by the receiving module.
In this case it appears 00 means it does not require acknowledgement.The rest of the 55’s are just padding. I know that because the 02 in the first byte told me there was only two bytes of significant data.Long story short, this message was just a signal from some tool on the bus to a specific module to let it know it was there. Not too excitingThere are 5 different modules this tool to talking to (30, 28, 10, 53 and 60).
I don’t know which modules those numbers correspond to but you can probably figure it out with enough internet searching.This is the interesting message:18DA30F1 X 8 03 22 48 00 00 00 00 00 417576This is the tester asking module 30 for some Mode$22 data from PID 4800. Module $30 then responded with 59 bytes of significant data.
Who knows what information is contained within this message(it is proprietary but again you may be able to figure it out with some internet searches) but something in your car is asking for it.Clear as mud?Dave. After I posted this, I realized I screwed it up. I swapped the sender and receiver in my head. It should read:“The Id is 18DAF130. The 18DA is a standard identifier for physically addressed signals(the tool is asking one module for a response).
You may also see 18DB which is a way for one tool to ask all of the modules for data(functionally addressed). F1 lets you know a “tester” is receiving this information as opposed to another module onboard. 30 is the sender’s address. This could be any module on that particular bus(engine, trans, body, HVAC.). The X is just to let you know this is an extended message(29 bit identifier).8 is the length of the message data to follow.This is the data that you actually care about:02 7E 00 55 55 is the length of the data in this message that is significant(not counting itself)7E is a standard identifier indicating a “tester present acknowledged” message00 is the “mode” for lack of a better term. There are a bunch of different modes that can be sent from the tester which do different things.
Mainly it indicates whether or not this message should be acknowledged by the receiving module. In this case The tester did require an acknowledgement.The rest of the 55’s are just padding.
I know that because the 02 in the first byte told me there was only two bytes of significant data.Long story short, this message was just a response from some module on the bus to the tester in response to its original tester present message(not included in your data dump). Not too excitingThere are 5 different modules responding to the tester’s message (30, 28, 10, 53 and 60). I don’t know which modules those numbers correspond to but you can probably figure it out with enough internet searching.”Sorry about that, its been a long day.Dave.
Dear Dave,Thank a lot for your reply, i was toying with the idea of decoding the data packet earlier and once again i am approaching it as it has become a necessity. I have understood what you have explained in the above post and would like to thank you for explaining it in such detail.Considerin’g the above the data dump, you have clearly explained what 18DAF130 refers to and also about “DB”. Clearly there are several notations which i need to be aware of if i have to understand the lines of data. Are their any literature where one could read through the different sets of identifiers.18DA10F1 X 8 30 00 00 00 00 00 00 00 38418DA10F1 refer to 18DA being the standard identifier and what does 10 refers to? F1 refers to the tester present. Whereas 30 refer to length of the data am i right?Also can you please elaborate what exactly you meant by the following ” this message was just a response from some module on the bus to the tester in response to its original tester present message(not included in your data dump).”Thank youWarm RegardsAkshay. Thank you for the reply sir, The reason i asked you is that i am trying to understand the data dump.
Right, so what you are looking at is just the frame identifier (18DAF160) and the payload (02 7E 00 55 55 55 55 55), CRC, ACK and other framing stuff shows up at a lower level and you don’t really care. What you need to do is figure out a way of understand the meaning of the data, and how to do it is up to you. What I did was taking one frame id at a time, observe how the data changed and try to correlate with the event in the car (from the video recording). That’s what this post is about.The “8” digit is probably the DLC, which is a just fancy name for the size of the payload (8 bytes).I don’t really have any in-depth literature on CANBUS, the protocol is not that complicated to understand, especially if you only care about application level stuff (i.e.
You are not writing a driver or implementing a controller or a circuit board). For how to reverse it up to you, this post contains a description of my process already. Hi, I am not able to reply on the above thread.But here we are. As I told you, I used an USB2CAN converter.
As soon as I connected this to the OBD-II port without actually powering it, I saw an unusual change in the dashboard lights and data. The cable which I used is OBD-II to DB-9 cable which you also suggested in your blog.I tried various baud rates – 500, 250, 50 kbps and also set the listen-only mode on, but as soon as tried the “candump” command, I did not get anything.Can it be a problem of device itself? Right, so, the fact the both that cable and the CAN interface have a DE9 connector does not mean that they are meant to be plugged together.
In fact they are not, that cable is using some pinout commonly found in OBD scanners (I think.), but the 8-devices converter is using the standardized CiA D-sub pinout ( page 9), which is what you expect in automation devices.You should cut the end of the cable and rewire it (which is what I did as well, I had a custom connector in my USB interface). What you did shorted some random signal together, hence the error lights on the dashboard. It probably did not blow anything but be careful with that, as far as I remember the OBD connector has a +12V line straight from the battery, which is probably limited by a 10A fuse or something. That’s potentially lethal to any non protected signal transceiver.:-). I have been working on a similar project and I have been using the STM32F. I have this working with the 105 series, and 407 series.
I am working on an OBD2 simulator and was able to get it working with very little code at least for proof of concept.My goal is to have a fully open source OBD2 simulator with all protocols. CAN was pretty easy using the MCP2551 chips, but now I need to develop the others, specifically 9141 LIN protocol.I am using the SN65HVDA195-Q1 lin transiever, which I have also succsesfuly got working on my own LIN network. Next goal is to get it working with the 5 baud init then switch to the 10500, but I have run into a problem with time.Would anyone be interested in working on the ISO 9141 OBD protocol?BTW, I have been using the STM32F discovery boards. They use the STM32F407 and they are only $15 from digikey. Hi,Thanks for your assistance to let us know more about CAN.
I have used a phyton sniffer and arduino can-bus shiled to analyse the data. Im trying to figure out how aircon works. I have found all the related CAN-BUS ids and datas for the aircon.
When i send them back it doesn’t care my data it keeps sending its own data. I used this way to lock unlock the doors, open the windows, move the seats, lights and so on. I used the aircon id and data for same brand car but different model it worked. I wonder that it maybe LIN-BUS or something else? Here is my id and sample data for fan level and temperature:CAN ID: 856, data: 0, 0, 0, 0, 21, 21, 153, 17CAN ID: 856, data: 0, 0, 0, 0, 21, 21, 153, 34CAN ID: 856, data: 0, 0, 0, 0, 21, 21, 153, 5117,34 and 51 are for fan level and 21 is for temperatureThe car is 2015 Model. Hey Chris, I think that cars with multiple bus commonly include that functionality in some node. You want to make sure to not overrun on the slow bus write queue.I would suggest you to avoid using a rPI for this, unless you can connect a CAN interface that can handle the two busses at full speed.
It’s tempting to use an SPI controller (the MCP2515 is very common), but that has terrible performances on highly loaded fast busses, and you will end up with problem such as RX buffer underruns and out-of-order frames. You should look into SoCs with two embedded controllers, the AM335x used in the BeagleBone Black with an appropriate cape may be ok – but whatever design you take make sure to load test it.
Hey Daksh, sort of. First, there’s no such thing as a negative ACK as far as I’m aware of: once a frame is on the wire it either gets ACKed from at least one of the other nodes or not (see the note about ACK slot in the frame format I posted).ACKs in CANBUS are weird, depending on how transmitter and receiver nodes are configured you may have different things happening:– the receiver ACKs anything that matches the acceptance filter unless it’s in listen-only mode. Hey Xavier, yeah totally, as you can see from the code this has very few dependencies.
Basically you need the compiler (native or cross), the kernel headers for the userspace (that’s needed for the various #include ), and the ncurses libraries and headers (for the #include. For the former, from how I’ve set up the makefile you need to have ncurses5-config in the PATH).If you have everything give it a “make” and it should build. If you are cross compiling make sure to specify the cross compiler, something like “CC=arm-linux-gnueabi-gcc make”.Cheers!Fabio. First off this is an awesome post. I have been putting this method to work on a few cars at home.
I am doing an experiment with a VW E-Golf and I need the% charge of the battery, which is unfortunately not available through OBD2.I have been successfully in decoding some CAN data on other cars, however on the E-Golf, only one pid is returned every couple of second. I thought it could be and error frame (only because I had not seen any of these yet). The values of the frame stay the same and are 20 01 00 00 00 00 00 80. I tried hitting buttons and driving and they didn’t change.
I tried to print just the error frames using the 00 on socketcan and still nothing.Is it possible that I need to access another CANBUS on the car? Or does this seem odd to you as well. I would think (from what I have seen and read) that there should be more than one pid on the system. I had set the bitrate to 500,000 and thought maybe I had that setting wrong. I tried the other standard rates 10k,20k,100k,125k,250k,800k,1000k and they all print nothing.
A VW manual for the BUS system stated that 500k was used for high speed data rates.If you could shed any light on the matter, it would be greatly appreciated.Best,Dan. Hey Dan, that’s a nice modern car packed with electronics I would not be surprised if the CAN on the OBD connector is for OBD only and there are one or two other dedicated busses for high speed critical stuff. I’ve actually read of other cars with this setup (some Volvo). If you want to be sure you can check the signal with a scope but since you are getting something reasonable it may be indeed all that is in that bus.The charge status and other information should be sent to the central dashboard somehow. I would start by taking that off the console and look for a twisted pair on the data connector on its back. Then you can either figure if that also ends on the OBD port in some of the vendor specific pins, or just splice a tap from there and start looking for your number.Good luck with that!
Can’t wait to hear the progress.:-). Currently I’ve been trying to reprogram my instrument cluster for information display changes.My current project is on a Toyota Corolla 2014. Current information display have the following options available to the user:Average Fuel ConsumptionCruising Range until emptyTrip Elapsed TimeAverage SpeedRealtime Fuel ConsuptionSetting (for brightness etc)The display cluster is controlled by a single button for switching displays. My project consists of changing ( or possibly ) adding a menu.
For the displays that is subject to change, I want to replace the Average Speed display to Current Speed. Also, if possible, I want to add a menu for displaying Engine Load and Voltage Meter.How can I reprogram the instrument cluster? Can i do it via OBD2? Also, what tools do i need? Any feedback would be greatly appreciated.
I got inspired by your project, studied around and finally got to purchase a USB2CAN interface and a an OBD to DB9 cable however as soon as I initialize the interface, everything goes crazy in the car. I get every possible error, and usually after I take the interface out and restart the car all is good.My car is a Peugeot 508, and I found out it’s using 11bit 500kbps CAN protocol. I assume I am doing something wrong? The interface supports up to 1Mbit buses, and everybody was praising it. I wanted to use it to capture information, and mostly just learn since it’s also a hybrid liek your toyota:)If you have any hints or things I should try, let me know. I would start by verifying that the cable is wired correctly for the device. From what I remember the OBD-DB9 wiring on common cables was different from the DB9 CANBUS wiring commonly used in industrial applications (which is surely the one for the 8devices adapter).
I’ve always used a custom cable for my tests (terminated on a 8P8C actually). If you are confident that the wiring is correct, make sure to put the interface in listen-only mode. That way even if you get the wrong bitrate, it should not make noise on the bus. Keep us posted! Well you were right, that’s what I suspected too, that the cable is wrong, and I ordered a different one.Now works perfectly, I initialized it and works, I can see the entire bus:)Now I don’t know what bus is exposed on the OBD port, I do know it runs at 500kbps. Mostly I want to enter the comfort bus and learn it, but of course, the big dissapointment now will be identifying the packets.I found a very interesting provider, they claim to sell CAN packet databases for different brands, I will see if I can get something, even if I have to buy it, I don’t mind, I want to build a better navigator.Here is the site btw:Of course if you know a place I could find something, unfortunately since it’s a french care I am aware I may have to learn french:).
Hi there, great job at experimenting with the Yaris.I have a question though; I have a spare instrument cluster (the electronic one just like yours since I changed to the analogue cluster in my 2007 yaris), and I want to find a way to drive the cluster, by information from racing simulators on PC. I have seen videos doing that with an arduino but with German vehicles’ clusters. I was lucky enough to stumble upon your video with the exact same instrument cluster as mine.Do you by any chance have any idea on how to tackle this? I want the RPM, speed and other data synced with the game’s on screen speed RPM etc.How possible do you think it is with this particular cluster?Cheers from Greece, George. Yeah it’s definitely doable, I did an external custom gear indicator and shiftlight myself for LFS many years ago.
You need to figure how to power up and inject the data on the real display, so get a power supply, a CANBUS interface, and try putting some valid speed and rpm frame on the bus (you have the format from my software). If you can get that working you need to find the documentation for external display for your racing simulator and just glue the two together. For LFS it was a simple UDP based interface, you tell the game where to send the data to and your application would get periodic status updates, look for OutGauge in. Any other game, I’ve no idea.:-) Keep us posted! A ti dirijo mi voz suplicante youtube. Would you be willing to share one of your CAN dumps?
I’m trying to hack the electrical power steering from a similar Toyota into my car and I’m curious to see if I can convince the power steering ECU that is talking to a car by just playing some data back. With a little hacking I should be able to modify the wheelspeed CAN messages and maybe (hopefully) have the steering assist change.The motor I’ll be using is from a 2007 Yaris, but I’m still missing the Yaris steering control ECU (should be acquired shortly).