Booting into PA Soft 1.4 for the first time:

Step 1: With the car off, connect your PA Soft cable to the OBDII port and the computer.

Step 2: Double click the "BMWScan140-1012" icon to open the program. Your shortcut may say something else, but it should look like this upon opening:

Step 3: Switch ON ignition and press "Continue". Now the program will think and display this screen:

This is the identification process. You can disable this at startup in the settings (I'll go over this later). IKE indicates the instrument cluster and LCM indicates the light control module.

Step 4: Click "close" to arrive at the main PA Soft screen.

Navigating the Menus:

This is your homepage for navigating PA Soft 1.4. Everything you see on the left sidebar (Car ident, Page 1...) can be accessed through the "Scanner" button on top. All of your cars modules (DME, EGS...) can be accessed through "Units". "View Log" will show you the log of your current session (this can be disabled in settings). I've never used "Support" and "Help".

 Car ident:

This will run the car identification process, same as it did upon startup.​

Page 1:

This is the page you are on, displaying the list beginning with DME.​

Page 2:

Page 3:

Scan! :

This will scan all modules for errors. You can scan individual modules or look at individual errors by going into the module of your choice.

Clear DTC:

This attempts to clear all errors.


From this menu you can see the status of the scanner and drivers. You can also turn off car identification at startup (it isn't necessary to identify every time, as each module will read settings before you can change them), and disable the log saving feature.​


I won't be including every module because a) my car doesn't have them all and b) the menus in many of the modules are similar and therefore redundant. If I skip a module, the information within is probably self-explanatory. You can access the modules from the "Units" menu at the top or by double clicking the name of each module in the list.


This menu contains many delicate settings. I strongly urge you NOT to change anything herein unless you are positive you know what you are doing.​

Read memory:

I have no idea what this does. All I know is it takes about 20 minutes and compiles a .bin file composed of hexadecimal lines.​


This allows you to read and clear present and past errors.​

Live data:

This is a fun one. There are two screens of live data. To get to page 2 you will click "+ data group". The options presented here are fairly self-explanatory.​


This menu gives you the option to write the odometer (it's a clear odometer:yes/no option) and reset EWS-DME adaptations. Resetting the adaptations will come in handy if you flash a new DME in the future (EU2/EU3/EU4, custom tunes done with WinkFP).​

Internal HEX-Editor:

As stated earlier, I wouldn't tinker with the DME values unless you know what you are doing. I'll go over the HEX-editor functionality later for two easy tweaks to the instrument cluster.​


This is your alarm/anti theft menu.​

 Coding data:

Clicking this will bring up a dialogue with three options. If you click on "Settings and manufacturer data" it will allow you to select your gearbox type. If you drive a manual you can disable the clutch switch by selecting "manual gearbox".​


This menu allows you to see the status of keys coded to your BMW. Disabling a key can be useful if you somehow lose one, or if one is unaccounted for from a previous owner.​


This is your airbag and seatbelt system. Clearing the errors in here can be useful if you accidentally disconnected an airbag with the battery still on during a project, causing an airbag light.​

Live data:

This will show information about all airbags and restraints.​

Coding data:

This will bring up a dialogue with four options. The third option will be "equipment". If you choose this, you will be able to enable/disable various SRS features. I have not gone deep into these options.​


Under this menu you can select "Crash data". In the following menu is the option to read or clear the "crash data buffer". This is uncharted territory for me.​


This is your instrument cluster. From here I will show you how to enable/disable chimes and key features, adjust your speedometer and temperature gauge for accuracy and more.​

Read/Write EEPROM:

These options allow you to read the current settings on your cluster and write edited settings back on to your cluster. When you read the settings an IKE_wr.bin file will automatically be saved to your log. Take note of this file's location, as it will be your stock baseline you come back to in the event you screw something up later on. In the event that this happens you will use the "open" button in the Internal HEX-Editor settings below to open your stock file, and you will then use the "Write EEPROM" button to restore your cluster to its original settings.​ 

You will use the Internal HEX-Editor if you intend to modify your temperature gauge or speedometer (below). When you read your EEPROM the blank grey area will be populated with hexadecimal values as seen above. You will then be able to modify those values as need be. Keep in mind that the read/write buttons do exactly that, they read the current settings off of your cluster, and write whatever is currently displayed as new settings. The four icons in the Internal HEX-Editor are "open", "save", "search" and "search". Open/save will allow you to populate the hexadecimal editor with a set of settings saved somewhere as a .bin file (IKE_wr.bin), and save anything that is currently in the hexadecimal editor as a .bin file. Keep in mind that open/save functions independently of read/write, it's a good idea to keep track of the different versions of your EEPROM if you are changing settings. I don't know why there are two search buttons, but they both seem to do the same thing. Clicking either one will allow you to search for hexadecimal strings, a handy feature when you're looking to change an existing string as seen below.​

 Temperature Gauge Mod:

Credit goes to TerraPhantm, Silbervogel and Mr.Philidelphia for this excellent writeup on modifying the temperature gauge parameters. From the factory our E46 temperature gauges are set to rest at twelve o clock when the coolant temperature is anywhere from 75C - 115C. Seeing as our cars operate optimally at 95C - 97C (give or take depending on outside temperature and other variables), this stock buffer is WAY too vague. The guide linked above will show you how to modify your temperature gauge to warn you in advance of overheating, a common cause of engine failure in our cars.​

Speedometer Mod:

Once again credit goes to TerraPhantm for this how-to. Most cars are set from the factory with an optimistic speedometer. The speed shown on the E46 non-M cars is approximately 5.7% optimistic (8.9% on the M3). This guide will allow you to set your speedometer so that it is dead on. With the stock settings my gauge used to display 74 when I was going 70, it is now accurate to within 1mph at up to 70+. Keep in mind that tire diameter, wear and pressure will affect this to some extent.​

Coding data:

Click "Recoding" to access various features of your instrument cluster. The "Standards" menu is self-explanatory. I did not change anything in "Engine" or "Gearbox". I don't know yet what changing the "Distance/speed values" does. For the sake of simplicity, I'm omitting any toggles I'm not familiar with below.​

Check/control, warnings:

C/C outside temperature: Unchecking this will disable the feature where the gauge flashes and beeps if the temperature drops below 37F.

Light on warning: I don't know what this does, but I'm curious. PM me if you have any ideas!​

Other options:

Belt lock contact: Unchecking this will disable your seatbelt light.​

RDC: Unchecking this will disable your TPMS light. Extremely handy if you intend to use aftermarket or steel rims without buying $250 worth of sensors.​

Service Intervals (SIA):

Litres: This corresponds to the number of litres of gas consumed before between inspection intervals. I haven't tinkered with this much since I'm pretty stringent about my maintenance anyhow.​

Kilometres: this corresponds to the kilometres driven between oil change prompts. I changed mine to 12500km, which is about 7500 miles.​

Min time/litres to reset: There are some restrictions on how small these numbers can be. I wouldn't worry about them unless you have some reason to reset your service intervals frequently.​

Display parameters: I believe this corresponds to the "Time, days" setting above. Since I want my interval reminders to be as minimal as possible, I selected "without time inspection". I'm still looking for a way to entirely disable service reminders.​

Acoustic warnings:

My E46 only has the "piezo" sound, the warnings are silent if I set them to "gong".​

Key in lock warning: This will disable the key chime.​

Belt lock contact warning: This will disable the seatbelt warning chime.​

Out. temperature warning: To my surprise, this did not disable the beep that warns of temperatures below 37F. This is why I disabled the "C/C outside temperature" option above.​

RDC warning: I haven't tested it, but I think it's safe to assume this will mute the chime associated with any TPMS warnings. Useful in combination with the "RDC" option above if you're deleting your sensors.​

Parking brake/Reversing gear/ASC warning: These all sound self-explanatory, but I can't recall my car making any noise with any of these three functions. Input on this is welcome!​

Speed limit warning: Once again, no idea what this does, but I would love to know. Perhaps it's a euro feature?​

 Service intervals: I presume this screen corresponds to the current intervals remaining until next inspection and oil change. It's slightly confusing because it only shows "Litres, current" and nothing about kilometres. I haven't been successful in resetting my intervals with the buttons on the right. This menu doesn't interest me much, but I would be open to input on it's functionality.


This is your light control module. In here you can access the menu by selecting "Coding data" then "Light coding".​

Cold/Hot check, BC message, PWM value:

This is uncharted territory for me. I know this has some functionality with how your car checks for bad lights and that some people have had luck disabling certain checks with aftermarket lights that throw errors, e.g. LED tails.​

Lighting options:

There many options here, but the only ones that work on my car are "Daytime running light US/turn sign./turn sign. 2.​


This is your Central Body Electronic module. From here you can select "Coding data" then "Recoding" to tinker with window, locking and alarm functions.​

Equipment and options:

These indicate options on your vehicle. This menu can come in handy if you are retrofitting or wish to disable any of these options.​

 Convenient opening/locking:

By default "Locking (remote control) will be unchecked. Checking this option will enable you to roll your windows/sunroof up with the key fob.​

Central locking functions:

"Mechanical lock" indicates the physical door keyhole and "Remote control, key 1-4" correspond to available key fobs. Selecting "No" will unlock all doors at once. "Selective" will unlock the drivers door first, and all other doors with a subsequent unlock command. "Entr. aid" will roll down the drivers window when unlocking the doors, a feature I don't quite understand.​

Automatic locking:

From here you can choose whether you want automatic locking all the time, or just with certain keys. "After starting (lock) will make automatic locking the default regardless of keys. "Terminal R" indicates reverse, and will lock the doors upon reversing, where all other options will lock the doors at a certain speed.​

 Antitheft system (DWA):

This is where you can enable/disable the factory alarm system, or just individual components. This is useful if you're retrofitting an OEM alarm system, or installing an aftermarket system in place of the OEM system. "DWA interior sensor, rear" only corresponds to convertible models.​

Acknowledgement: You can select your car's behavior upon arming/disarming here (associated with locking/unlocking). For some reason I only had partial functionality of the acoustic/optical arming/disarming when I checked "Arming, doors closed- acoustic/optical", for this reason I left them unchecked and everything works great. My car chirps and flashes as it's supposed to.

To activate the alarm optics without having a physical alarm:
-check DWA
-check the options with "optics"
*note if you have bits and pieces of the oem alarm, you may enable those options

To activate a OEM alarm:
-check DWA
-check DWA interior sensor
-uncheck DWA interior sensor, rear (unless you have a convertible which has a front and rear interior sensor)
-check DWA tilt alarm sensor
-check the options with "optics" and "acoustics"
*note you must have all 3 (4 for convertibles) pieces to the alarm otherwise your car will throw a code. e.g. you have the siren and motion sensor but no tilt; your DWA will show a fault and will not arm. Siren will still go off if doors are breached.


You can access the menu for your radio through "Coding data" then "Recoding". From here you can choose if you want RDS (text display) and AF (automatic tuning) enabled. You can also opt to have your radio settings memorized with different keys. I don't know what the option for "REG (0..4):" does, but I would be interested to hear any ideas!​


ZKE Options:

To do any of the functions in the ZKE section:

- select "Coding data"


To activate the alarm optics without having a physical alarm:

-check DWA

-check the options with "optics"

*note if you have bits and pieces of the oem alarm, you may enable those options


To activate a OEM alarm:

-check DWA

-check DWA interior sensor

-uncheck DWA interior sensor, rear (unless you have a convertible which has a front and rear interior sensor)

-check DWA tilt alarm sensor

-check the options with "optics" and "acoustics"

*note you must have all 3 (4 for convertibles) pieces to the alarm otherwise your car will throw a code. e.g. you have the siren and motion sensor but no tilt; your DWA will show a fault and will not arm. Siren will still go off if doors are breached.


To enable remote closing windows:

-default "Opening (remote control)" is checked and "Locking (remote control)" is unchecked

-check "Locking (remote control)" to enable closing with remote

*note the lock button closes and unlock opens the windows upon holding of the key


To enable one click to unlock all doors:

-default "Selective" is checked. This allows one click of the unlock button of the remote to unlock the drivers door. A second click unlocks remainder passenger doors

-check "No" to unlock all doors with one press of the unlock button


To change the tilt of the passenger mirror when in reverse:

-default "Memory" is unchecked

-set mirror switch to passenger. The mirror will tilt to your personal position.

-to set your position, have switch on passenger side, and adjust your mirror while in reverse gear.

*note if "Memory" is checked mirror switch must be set to passenger for option to work. Switching to driver will disable the auto-tilt.

**note if "Memory" is unchecked mirror switch must be set to driver for tilt to work (by default it tilts to the maximum amount). Switching to passenger will disable the auto-tilt.

EWS Options:


To check the number of keys you have used:

-select key status

-you may also disable keys if you lost them from this menu as well

note* as you can see, I have two keys out there in the world from the previous owner as I only own two of them


To view live data:

-select live data


To DISABLE the clutch switch:

-select "Coding data"

-select "Settings and manufacture settings"

-select Manual transmission

note* only for manuals

note** this allows you to start the car without having to depress the clutch

SRS Options:


To view live data about your airbags:

-select live data


To DISABLE seat occupancy sensor:

-select "coding data"

-select "Equipment"

-uncheck "Seat occupancy recognition"

note* I haven't tired this as I don't need to nor have I installed aftermarket bucket seats


To DISABLE seat belt light:

-select "coding data"

-select "Equipment"

-uncheck "Seat-belt buckle switch"

note* I haven't tried this myself as I always wear a seat-belt nor have a race harness

IKE Options:

In the IKE menu you can change items such as service intervals frequency (ie. km/mi until next service), etc

LCM Options:


To enable or disable your DRL:

-select "coding data"

-toggle the options for "running lights"

Thanks to TerraPhantm for this one - DIY: Changing Temperature Gauge Buffer Range with PA Soft 1.4

Thanks to TerraPhantm for this one - DIY: Eliminate Speedometer Error doityourself



Code: 03 00 23 C8 00 25 CC



Code: 03 00 01 C8 00 01 CA

Steering angle sensor programming

The solution, pretty simple, I pulled the EEPROM off my other e46, and after seeing what it looked like it was obvious.


1) Open PA Soft 1.4, connect to car, click on LEW to open the LEW page

2) Click Reprogramming

3) On the Reprogramming menu, Click Write ADFG

4) Enter "00XXXX" where XXXX is the last 4 digits of your VIN

5) Click OK


Once that completes


6) Click Read EEPROM

7) Edit the values highlighted in the attached image


You will need a hex to ansi converter for 2 letters

-- this appears to be a simple converter that works well



The row we are modifying is 0x20, looking specifically at locations 4-8 (red text in the image)


This would be 20 45 31 4A 4C in the image below


These characters translate to the last 7 VIN digits, backwards.


4C in hex converts to the letter L

4A in hex converts to the letter J

31, 45, 20


This would be the last 7 of the vin LJ31452


Change for your vin.


8) Click the Save Icon

9) Click Write EEPROM

10) once this completes, clear the errors under both LEW and ABS pages