I will have to check the software to see where the status flags should be. You can use RV in raw data mode to se which values change when an event occurs.
You can read up to eight addresses at a time, I do this with the Tuner pro definition files and future versions of RV will do this too. If you use more than four bytes then you have to have good data checking and error recovery, the Tech 1 tool suffers from frequent lock ups.
You must insert some delay between messages or the serial link will lock up, the fastest polling speed varies between ECUs which is why I made RV user configurable. You may need to increase the delay to allow for operating conditions where the processor is busier.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
Where can I find status registers that keeps information about fuel pump, fan relay, etc? I can see in RV four 'Status Flags' addresses, but they are zero all the time. I expect at least fuel pump bit to appear somewhere, because pump is turned on for 3 seconds after switching ignition? Maybe immobilised ECU doesn't switch pump on?
Currently I can read all relevant values from ECU and display it on microcontroller's LCD. I fight with data formats and presentation. In the meantime, I exhausted 8kB flash memory in atmega8 and must switch to better microcontroller - I suspect, that 32kB should be sufficient.
I noticed, that in RV you read all addresses in 4 byte chunks. Because I have limited space on LCD, I read only six functions choosen by user. It appeared, that if I query ECU without a small delays, it will not respond. It was necessary to put about 2ms delay before next query.
Baleno has a egr actuated by stepper motor. I was sure that vitara uses vacum actuated valve like samurai? I read somewhere in FSM that in Baleno ecu checks pressure change in intake manifold when opening egr valve. When it's not correlated, fault is raised.
EGR should generate a fault it should check the voltage on the EGR to check that it switches correctly. The circuitry is on the board and the code is in the software. When the weather improves I will check it out properly. On the Vitara it generates a fault code at ignition turn on.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
I think that EGR, canister purge valve, idle air valve and egr will not generate fault code, because they're acts only as an output and ecm can not detect malfunction. Or this is considered as low severity fault and ignored. Absence of lambda sensor should generate fault. I'll check it out when finish more portable device than a testing bench.
I'm interested in what fault codes you can get from the ECU. When I was testing my Baleno I unplugged both the EGR and the O2 sensor but I didn't get a Check Engine Light or any fault codes.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
The file contains fault codes for lots of different vehicles, including diesels, each vehicle has only a subset of those codes. there are also additional adrdresses that contain further codes for immobiliser and ABS faults.
On the Baleno ECU address 0 and 1 are current faults and adress 2 and 4 are stored codes.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
I connect RV and then go to dataviewer. On page 2 I can see 'Fault flags 1', 'Fault flags 2', 'Fault flags 3', 'Fault flags 4' fields with values 42, 0, 42, 0 If I switch to raw data mode, these values are at addresses 0, 1, 2, 3.
But the question is how to translate 42, 0, 42, 0 to error codes 14, 21, 23 that I can see in faultcode viewer? 42 is binary 00101010, so I assume each bit position is one code - according to numeration in faultcodes.csv? But I can see place only for 32 faultcodes (4 times 8 bits) and in faultcodes.csv you have 55 positions?
And if I have only three errors, why it's twice (at address 0 and 2)? Current at 0 and history at 2?
When the ECU detects a fault it sets a bit in one of the fault code registers. Each bit or 'fault flag' corresponds to a faut code. The bits are in numerical order and the FSM tell you what fault code so you can get from the ECU so by forcing errors by disconnecting or shorting sensors you can determine all of the addresses. These addresses are defined in the fault code definition file. The value 42 doesn't tally with the fault codes that you are getting, are you looking at that in raw data mode?
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
Hi, My work is in slow progress - I can currently connect, read ECUid or set it manually and display battery voltage (it was also hard to find out, that voltage raw data should be multipied by 8 and divided by 100). More gauges to come soon. I have next question regarding fault codes.
When I connect using RV to my test ecu on the bench, I can read errors 14, 21, 23 (not surprise, because nothing is connected to ecu). When I read locations of fault codes using my device (addresses 00, 01, 02, 03) I just receive values 42,0,42,0 These values are identical to 'Fault Flags' displayed in RV data viewer. I'm confused. What are 'Fault Flags' and where can I find the real fault codes?
The header 14 reset clears all of the RAM area, there isn't a seperate reset for just the fault codes. If you have a fault then the fuel trims probably won't be correct anyway.
I've tested this on a few vehicles but I haven't had consistent results, sometimes it seems like you have to power off and then back on again before the reset takes effect.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
OK - thank you for permission. As I wrote, this is just a hobby and I do it only for my satisfaction. When ready, I can provide board drawing, diagram and firmware.
I can not find info how to reset checkengine light. Is it command launched from RV menu 'Command|Reset ECU'? I'm not sure if this only remove errors and turn off checkengine light or reset all learned parameters (eg. fuel trims).
I found somewhere on the Internet info like below, but I'm not sure if it's correct:
Clear ECU errors: 14 03 83 14 04 01 81 01 - 1 fault code cleared. Works only when engine is ON
That column was default values but its not used anymore. You can use any of my information for private use but not for commercial use, you should verify that those values are correct, sometimes errors occur.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
OK - thank you for clarification. Now it makes sense. One more question about this file - the section with scaling factors has values for each ECUid and also value before name. Eg: 2, TPS, , 1, 0.49, 0.49, 0.49, 0.49, 0.49, 1.11, 1.11, 1.11, 1.11, 1, 1.11 I understand that I have to multiply value read from address by 1.11 (in case of ECUid:1943), but what is the meaning of number 2 at the beginning ?
And the most important question: Can I use these values in my firmware? This is your work and I don't want to violate your rights.
I think that you are reading the file wrongly. Under the 1943 column you should look down until you find the function number for battery voltage (29) and then look to the left to the address column for the address that the battery voltage is at (22). 22 is 0x16 so to get battery voltage you should send 0x13,0x04,0x16,0xD3
I haven't been able to find the address for ignition timing when testing on the vehicle so if you do find it please let me know. I will check the code for that when I find the time but my Baleno is currently off the road with the usual rusty front subframe.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
May I ask for some clarification, please? To request info for eg battery voltage, I should send sequence: 0x13 0x04 0xaddress 0xchecksum
0x13 is header for data request 0x04 is message length 0xaddress is address where is located value to retrieve
I downloaded RV and connected on the bench to my ECU (id:1943) and I can see real battery voltage. But when I opened datastream.csv file, function address for my ECU is empty. How to interpret this null?
As the basic communication is solved, I can write more sophisticated software, to pull realtime data.
Do you have some info available, what can be queried and how? I mean how to send requests for eg battery voltage and interpret it to human readable value from hex.
Good work. The information that I have is from bench testing and logging my own Baleno. If you download RV and look in the bin folder there is a configuration file which contains all the data that I have on that model.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
Can you provide more information on the hardware set up that you are using?
This is universal development board based on Atmel AVR atmega8 controller (with some peripherials) - nothing fancy, but flexible.
As this is just a hobby, I have not much time to work on it.
Recently I found ftdi based cable (usb<->rs232 ttl) and connected avr to pc, and I'm able to receive 10 03 ED sequence from controller, so Tx at 7812 baud works.
Before I tried with chained usb<->rs232<->max232 and received on pc data was just random.
Next step is to send back some bytes from pc and display on lcd.
My goal is to create something similar to "Scangauge" for SDL. Will let you know about progress.
Thats a good project. I have considered producing something similar but under EU regulations any equipment designed for permanent connection to the vehicle's electrics must be type approved. Type Approval can be very expensive so I haven't pursued this. Personal projects are OK because they can be classed as prototypes.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
I set baudrate explicity to 7812 on external system. I will write test program, to continously send 0xAA byte and check bit duration on oscilloscope. Maybe something wrong with crystal osc... In worst case I'll try to connect from pc using realterm, but it will require to solder some interface ;( Will let you know about results.
Regarding immo, I have no idea why it works in vehicle. I think, that all is connected according to factory manual. It would be weird, if one can disable immo grounding some wire.
I would expect you to be able to communicate with the ECU even if it is immobilised. Have you checked that the data is being transmitted at the correct baud rate and is of the correct polarity. I wonder if you have an extra wire grounded when in the vehicle that disables the immo.
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.
Yes, I receive echo, but nothing more from SDL line. I set transmission parameters to 7812, 8N1. I connected on the bench E01,E02,E1 to ground, B1 and BB to power supply. Checkengine lamp (test LED) blinks. It expects immo I believe - it is strange, because when I put ECU it in my car, it worked without immo.
Can I read ECUid without immo? Maybe I should ground DN pin?
When I send "commands" to ECU, should I add at the end code for 'carriage return' or 'line feed' or both? I mean 0x10 0x03 0xED or 0x10 0x03 0xED 0x0D or 0x10 0x03 0xED 0x0D 0x0A
This same when receiving answer. Is it ended with additional CR code or not? I don't use pc terminal but other embedded system, and so far no answer from ECU.
Thank you for quick explanation. I want to connect using avr microcontroller, so (at least at the beginning) I will not use RV. Baud rate 7812 is fine for quartz 4 or 8 MHz - should be zero error using this speed.
The Baleno is usually 7812 baud. There is an issue with RV with changing the baud rate, if it doesn't connect then you will need to shut down RV before changing the baud rate and reconnecting.
The Checksum is the complement of all of the preceding bytes. The sum of all bytes including the checksum will equal 0x00.
so, 0x10+0x03 = 0x13, inverted = 0xED
and 0x10+0x03+0xED = 0x100 but only the lower 8-bits are used so the sum = 0x00
__________________
1984 Suzuki SJ413K pick up, 1.6 16V Baleno engine 2000 Suzuki Vitara 1.6 8V, many mods 2004 Suzuki Ignis 1.5VVT 4Grip 2006 Suzuki Jimny 1.3VVT JLX+ and many more.