Alfa Romeo Forums banner
1 - 7 of 7 Posts

160 Posts
The last month Dimtey and I tried to get my light out,(I'm a Windows addict and a Linux "noob"). With an extreme lot of effort and patience from Dimtey's side we didn't only made Dimtey's program work, but we also found a way that everyone would be able to reset the airbagmodule by himself.

Dimtey, a lot of thanks for your help and patience!


160 Posts
That one will work!

If you have a laptop with USB port, hi speed internet to download Ubuntu(a Linux operating system) a provision to burn Ubuntu on a CD rom, all you need is a USB to OBD cable(FDTI chipset based) and, if you want to do it fancy, you should get yourself a OBD to Fiat/Alfa 3 pin testconnector.(otherwise you have to fiddle a little bit with a selfmade 4 wire cable.)

The good thing about this testcables is that you will be able to read out faultcodes, read out realtime data and reset faultcodes of your ML1.7 Motronic system with Unidiag.

More info about Unidiag and the 164 can be found here.

Alfa Romeo 164 Register

160 Posts
I will make a "resetting your airbaglight for dummies" for use with the 164bag program Dimtey made.
Dimtey guided me through the program step by step since it isn't exactly plug and play.

Did you also ordered the second cable?

160 Posts
Although DemTey's program is free, it's worth every penny!

Yesterday I did a reset on the airbaylight of the Q4.First I had to installl the two bulbs, already removed by the previous owner and indeed it was flashing.Again the reset went flawless, childsplay!(once you kown what you have to do ofcourse.)
Faultcode was 30 and not present, same as the other one.

Which of the cables do you have?
If you have the USB to OBD cable and you're a litle bit handy with cables, the light could be out before nightfall.

160 Posts
Ok, first you have to download the live CD of Ubuntu.
Burn it on a CD rom (slow speed, you don't want to have any failures on the CD rom)

Downloading it, can be done here:

Download Ubuntu | Ubuntu

Now we have to take the biggest hurdle; getting from OBD to your ECU.Having the OBD to Alfatestconnector makes life much easier and can be of greater joy as well when you start to go into the motronic ECU with Unidiag which is using the same interface cables.

Grab the airbagtestcable from behind the RH footwellcarpet.It could be, never been used before, that it is still tight up to the rearside of the dasboard.

The connector has 3 wires; black is ground, white/red is K line and lightblue/white is L line.

Now you have to hook up each of those 3 wires to the OBD connector and add a 12V from your car as well.
When you have the 12V and the ground connected, the LED on the interface should light up.

On the OBD connector, the pinout is as follows:

5-ground (4 might need a ground as well, the pinout says chassis ground, just in case)
16-12V from the car

Copy 164bag program to a USB drive (Sent to you by mail; courtesy of Dimtey)

Now put your LiveCD into your laptop and let it startup; your computer will now startup from the live CD and bring you into a Linux environment.

Insert USB drive - Linux should notify you that new device is added.

Open the USB drive and copy 164bag to the desktop.

Open a terminal (console);"Applications">"Accessoiries" then select "Terminal"

Use command "cd Desktop" (Note the capital D!) in the terminal

Run "chmod +x 164bag.dat" to make it executable (spaces after chmod and +x)

Connect diagnostic cable and turn igition to on.

Run command "dmesg" - it should output a lot of stuff, last few
lines should say that FTDI serial device is detected and list its
device name, something like /dev/ttyUSB0

Run "sudo ./164bag.dat 0x80" (spaces after sudo and dat)

sometimes the first attempt fails, but then it will come up with something like this:

ID (msg 0): B01AIRBAG
ID (msg 2): 6057743800
ID (msg 4): GF05652178
DTC (msg 8): 30 (0x1e)
DTC (msg 8): 8 (0x08)

DTCs received: 1

Most likely your faultcode is 30 and the status is 8.

Now run

sudo ./164bag.dat -c 0x80

and the light will stop flashing and extinguish!

All credits for the above are going to Dimtey !!

I already resetted 3 airbagECU's all with faultcode 30 and status 8*

* 30 means "lights/instrumentpanel was disconnected; status 8 means "not present anymore"

160 Posts
Unidiag and the cables can be used with ML4.1 as well.The ML 4.1 doesn't have a faultmemory, so all faults have to be read out in realtime.

The following is the .def file for the ML 4.1 motronic.

Mind you the euroversion of the 164 didn't have the "check engine" light and the subsequent flashingcode fault list, so in order to retrieve faultcodes, we either have to make our own testlight or use unidiag.

On top of the faultlist, Unidiag is able to retrieve realtimedata for the parameters described in the second part of the .def file.


RDTC_71, 0x07, -1,"all","#countlist 0 5",5,
"DTC",2,"#scaling list 1","#list DTC",
"State",2,"#scaling bitmask 1","#list DTCState",
"Condition1",1,"#scaling unsigned 1 X",
"Condition1",1,"#scaling unsigned 1 X",
"Counter",1,"#scaling unsigned 1 X";

#clear REI_71;
REI_71, 0x00, 0x00,"ECU ids" ,2,
"ECU Manufactorer HW id", 1, "#scaling ascii_inv 10",
"ECU Manufactorer SW id", 1, "#scaling ascii_inv 10";

% read parameter description
RAM_71, 0x01, 0x003A, "Engine speed", 1, "Engine speed", 1, "#scaling unsigned 1 ""X*40"" RPM";
RAM_71, 0x01, 0x0042, "Engine load", 1, "Engine load", 1, "#scaling unsigned 1 ""X*0.05"" msec.";
RAM_71, 0x01, 0x0062, "Injection time", 1, "Injection time", 1, "#scaling unsigned 2 ""(((x&0xff00)/(2**8))*2.0+(X&0xff)/256.0)/1000.0"" msec.";
RAM_71, 0x01, 0x0062, "Injection time test", 1, "Injection time test", 1, "#scaling unsigned 2 ""(0x10000-X)*(12/10000.0)"" msec.";
RAM_71, 0x01, 0x7E40, "Idle value integrator", 1, "Idle value integrator", 1, "#scaling unsigned 1 ""0.00781*X+0.00019"" ";
RAM_71, 0x01, 0x7E50, "Offset integrator", 1, "Offset integrator", 1, "#scaling unsigned 1 ""X*0.39"" ";
RAM_71, 0x01, 0x7E52, "Slope integrator", 1, "Slope integrator", 1, "#scaling unsigned 1 ""X"" ";
RAM_71, 0x01, 0x7E48, "Lambda integrator correct.", 1, "Lambda integrator correct.", 1, "#scaling unsigned 1 ""X*2"" ";
RAM_71, 0x01, 0x7E0F, "Lambda sensor integrator", 1, "Lambda sensor integrator", 1, "#scaling unsigned 1 ""0.00781*X+0.00019"" ";

ADC_71, 0x08, 0x00, "Air flow meter voltage", 1, "Air flow meter voltage", 1, "#scaling unsigned 2 ""(0.003904*X+0.000095)*5.0"" Volt";
ADC_71, 0x08, 0x01, "Battery voltage", 1, "Battery voltage", 1, "#scaling unsigned 2 ""0.0681*X+0.0019"" Volt";
ADC_71, 0x08, 0x02, "Air temperature", 1, "Air temperature", 1, "#scaling unsigned 2 ""-2.01389E-05*(x**3)+0.008784722*(x**2)-1.676875*x+156.74375"" Deg./C";
ADC_71, 0x08, 0x03, "Water temperature", 1, "Water temperature", 1, "#scaling unsigned 2 ""-2.01389E-05*(x**3)+0.008784722*(x**2)-1.676875*x+156.74375"" Deg./C";
ADC_71, 0x08, 0x04, "CO potentiometer position", 1, "CO potentiometer position", 1, "#scaling unsigned 2 ""0.0195276*X+0.0004723618"" Volt";
ADC_71, 0x08, 0x05, "Lambda sensor voltage", 1, "Lambda sensor voltage", 1, "#scaling unsigned 2 ""(0.00488*X+0.00012)*1000"" mV";
ADC_71, 0x08, 0x06,"ADC_6 internal voltage", 1,"internal voltage", 1, "#scaling unsigned 2 ""0.0195276*X+0.0004723618"" Volt";
ADC_71, 0x08, 0x07,"ADC_7 Coding Resistor voltage", 1,"R coding", 1, "#scaling unsigned 2 ""0.0195276*X+0.0004723618"" Volt";

#list addr20state, 0x01, 0x03, "Accelerator: Fully pressed";
#list addr20state, 0x02, 0x03, "Accelerator: Idle";
#list addr20state, 0x00, 0x03, "Accelerator: Intermediate";
#list addr20state, 0x03, 0x03, "Accelerator: error";
#list addr20state, 0x04, 0x04, "Octane: low";
#list addr20state, 0x00, 0x04, "Octane: high";
#list addr20state, 0x10, 0x10, "Gear lever position: Neutral";
#list addr20state, 0x00, 0x10, "Gear lever position: Drive";
#list addr20state, 0x20, 0x20, "Engine type: Eco";
#list addr20state, 0x00, 0x20, "Engine type: Not eco";
RAM_71, 0x01, 0x0020,"Bits dig. inputs", 1,"Bits dig. inputs", 2, "#scaling bitmask 1", "#list addr20state";
1 - 7 of 7 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.