Instructions to change fuel maps on 14CUX Griffith, Chimaera

Instructions to change fuel maps on 14CUX Griffith, Chimaera

Author
Discussion

stevesprint

Original Poster:

1,114 posts

179 months

Thursday 15th January 2015
quotequote all
davep said:
There is a counter called tpMinCounter that is used to slow down the ‘set Throttle Pot to minimum adjustment’ function (which is initialised with a value of $34 (54)). With the throttle butterfly rapidly approaching its minimum or closed position (the car coasting to a stop scenario) the counter delays the corresponding drop in RPM. Since the Fuel Map 2 count is the higher value, RPM is held at 1274 rpm for a longer period compared with Fuel Map 5.
Dave,
Well done, That's excellent work and explains a lot about my very early test results. I always assumed it was in the code as R3383 seemed to hold the idle higher but now thinking about it I never copied my R2422 full data structure in to R3383 like I do now into R3652. I'm already looking forward to having some more data to test when the weather improves.

This sounds like what Mark Adams refers to as engine breaking that he improves in his Tornado chip and therefore must be configurable data after all.


danbourassa

246 posts

137 months

Thursday 15th January 2015
quotequote all
stevesprint said:
This sounds like what Mark Adams refers to as engine breaking
Steve, I hope you mean engine braking. smile

davep

1,143 posts

284 months

Thursday 15th January 2015
quotequote all
stevesprint said:
This sounds like a job for SteveSprint. Paul, do you mean things like the following:-
Map 2 Throttle table,
Map 2 Start up enrichment
Map 2 Temperature Fuel Multiplier
Dynamic column headings for the main fuel table
MIL lamp enable/Disable

Plus it now sounds like I should also add these,
LC7BD DB $7A ; value stored in X200E (yet another fuel map value)
LC7BE DB $2C ; value stored in X200F (a coolant temperature threshold)
LC7BF DB $49 ; value stored in X2010 (todo)
LC7C0 DB $64 ; value stored in X2011 (multiplied by abs of throttle delta)

If my Griff was on the road I’m sure I would rush out tomorrow and start testing them.

Anything else anyone???

Paul, I'll try and add these before you get your car back on the road.
Cheers, Steve
P.S. I'm not one of the clever people.
Stevesprint I thought you were on holiday as you’ve not posted on here for a while! And there’s me thinking ‘Steve’s away so perhaps I’ll be able to get a word in edgewise now’. Good to see you back. smile

I think you’re going to be busy testing the last eight positions (x200A - X2011) in the fuel map data sections as they show some interesting trends:

Tune R2422
FM2 $91, $1B, $04, $82, $2C, $2D, $68, $3C
FM5 $B9, $1B, $05, $6C, $6E, $2C, $5C, $64

Tune R2967_chim450_CAT
FM2 $B2, $1B, $03, $6C, $24, $23, $68, $3C
FM5 $91, $0F, $04, $BC, $6A, $27, $5A, $64

Tune R3361
FM2 $B2, $1B, $03, $6C, $24, $23, $68, $3C
FM5 $B2, $1B, $05, $6C, $7A, $2C, $23, $64

Tune R3652
FM2 $B2, $1B, $03, $6C, $24, $23, $68, $3C
FM5 $B2, $1B, $05, $6C, $7A, $2C, $51, $64

Looking at R3361/R3362 and Joel’s issue with high RPM it appears X2010 values as low as $23 in FM5 were in favour for those tune versions. It’s noticeable that the FM2 value of $68 is consistent throughout. Some other wide variations occur in X200E (a fuel map value) and X2011 (a value for calculating throttle delta)!



Edited by davep on Thursday 15th January 13:31

jjohnson23

700 posts

113 months

Thursday 15th January 2015
quotequote all
Steve,that would be excellent and you are one of the clever ones along with Dan,Colin and the others.
I feel like an observer at the moment and want to be able to contribute a little(and with my knowledge it will be a little).

stevesprint

Original Poster:

1,114 posts

179 months

Thursday 15th January 2015
quotequote all
davep said:
Stevesprint I thought you were on holiday as you’ve not posted on here for a while! And there’s me thinking ‘Steve’s away so perhaps I’ll be able to get a word in edgewise now’. Good to see you back. smile
Dave,
laugh I'm pleased to hear you missed me, made excellent progress and had an exciting time. I’ll have to go off-air more often.

stevesprint

Original Poster:

1,114 posts

179 months

Thursday 15th January 2015
quotequote all
jjohnson23 said:
Steve,that would be excellent and you are one of the clever ones along with Dan,Colin and the others.
I feel like an observer at the moment and want to be able to contribute a little(and with my knowledge it will be a little).
Paul
Successfully repairing a 14cux circuit board is clever especially when there are three 0.25mm broken tracks that are invisible under normal viewing, that’s really clever.

stevesprint

Original Poster:

1,114 posts

179 months

Thursday 15th January 2015
quotequote all
JOA said:
1. In Map 2, a most annoying high idle when coasting to a stop. The ECU holds the idle at around 1200RPM when coming to a stop which actually makes it somewhat difficult to bring the truck to a stop. After about 2seconds at zero speed the ECU will bring the idle back down. This phenomenon is not present when using the R3526_(R3360A)_3.9_High_CR tune that I downloaded from Dan's google drive.

2. In Map 5, I noticed that the AFR occasionally jumps up to and sticks at around 15.5 when idling. I am not sure how the ECU is doing this since I think that 15.5AFR is outside of the range of a titania oxygen sensor.

Incidentally, I have tried to force the ECU to run in closed loop at an AFR other than 14.7 by altering the oxygen sensor set point. I did this by modifying the code between C222 and C223 to force the ECU read a hard coded value instead of the analog value from channel 13. I succeeded in being able to swing the AFR lower by giving the ECU a rather large set point value. A fixed value is of course impractical since subsequent variations in the alternator's voltage will cause errors in the O2 sensor readings.
Joel,
Thanks for sharing your important discoveries with us all. I’m sure you realise your first point was a huge help as it pointed Dan and Dave in the right direction, plus I’m now looking forward to testing the data variables but I'm sure you'll beat me to it.

Your second point, I've also noticed exactly the same AFR fluctuations in closed loop at idle and agree it seems wrong that the open loop idle AFR is more stable than closed loop. At first I thought something was wrong until Mark Adams educated me that the AFR fluctuates by design to help the CAT’s chemical reactions. There's also a really good explanation on Wikipedia under the heading ‘Three-Way’. http://en.wikipedia.org/wiki/Catalytic_converter.

Mark Adams on Page 24 said:
As it turns out there is nothing crude or slow about the way the 14CUX uses the Oxygen sensors in the exhaust, and you will see exactly the same behaviour on any modern car. The cycling rate increases dramatically with engine speed, so you can see that it is not a limitation of the system.

When a three-way catalyst is operating correctly, it will store Oxygen as a normal part of the chemical process. However it can only convert oxides of Nitrogen when the mixture is richer than Lambda 1.0, which is why the cycling of the mixture around Lambda 1.0 is vital. Oxygen is stored all the time in a healthy catalyst, but NOx is only converted in the rich side of the cycle. Since the catalyst effectively averages out the chemistry, the overall result is correct.

Using the Laboratory-grade Horiba Oxygen sensors (and nearly all the others too), the 14CUX always runs at 14.7:1 when it is on Lambda control. If you see something different, you need to check your calibration.
Joel,
I'm very impressed you've been modifying the code, do you use Dan's rebuild project? It's my favorite toy. Do you mean you've modified the data at C222 & C223 or the code below that uses the data at C222 & C223? I guess this could vary depending on which revision you are working on.

;------------------------------------------------------------------------------
; MAF Fault Substitution Code
;
; This code executes when the MAF Fault Bit is set. Since the load based row
; index cannot be calculated without a valid MAF reading, an alternate method
; is needed. This method estimates the fuel requirement based only on throttle
; position and engine temperature. The data values that are used to tailor
; the results are stored in the data portion of the PROM. The code is set up
; for different open and closed map values, however, both sets of values are
; identical. The end result is a 16-bit value in the AB register set. The
; normal fuel map code block is then bypassed.
;
;------------------------------------------------------------------------------
ldd throttlePot ; load 10-bit TPS value
subd throttlePotMinimum ; subtract TPmin
bcc .LE87A ; branch if result is positive

ldd #$0000 ; else, limit value to zero

.LE87A lsrd ; shift right twice so that
lsrd ; top bits are in B register
ldaa fuelMapNumber ; load fuel map number
beq .LE885 ; branch if map 0

cmpa #$04 ; compare with 4
bcs .LE89E ; branch if less than 4
;-------------------------
; Fuel Maps 0, 4 and 5
;-------------------------
.LE885 ldaa coolantTempCount ; load ECT sensor count
cmpa $C221 ; value is $47 (56 C or 138 F)
bcs .LE895 ; branch if ECT is hotter

ldaa $C222 ; value is $1E
mul ; mpy top 8 bits of TPS by $1E
addd $C223 ; value is $1000, add this 16-bit value
bra .LE8B5 ; branch ahead

.LE895 ldaa $C225 ; value is $24
mul ; mpy top 8 bits of TPS by $24
addd $C226 ; value is $0E00, add this 16-bit value
bra .LE8B5 ; branch ahead
;-------------------------
; Fuel Maps 1, 2 and 3
;-------------------------
.LE89E ldaa coolantTempCount ; load ECT sensor count
cmpa $C228 ; value is $47 (56 C or 138 F)
bcs .LE8AE ; branch if ECT is hotter

ldaa $C229 ; value is $1E
mul ; mpy top 8 bits of TPS by $1E
addd $C22A ; value is $1000, add this 16-bit value
bra .LE8B5 ; branch ahead

.LE8AE ldaa $C22C ; value is $24
mul ; mpy top 8 bits of TPS by $24
addd $C22D ; value is $E000, add this 16-bit value

Joel,
Thanks again for all your valuable help.

stevesprint

Original Poster:

1,114 posts

179 months

Friday 16th January 2015
quotequote all
davep said:
I think you’re going to be busy testing the last eight positions (x200A - X2011) in the fuel map data sections as they show some interesting trends:

Tune R2422
FM2 $91, $1B, $04, $82, $2C, $2D, $68, $3C
FM5 $B9, $1B, $05, $6C, $6E, $2C, $5C, $64

Tune R2967_chim450_CAT
FM2 $B2, $1B, $03, $6C, $24, $23, $68, $3C
FM5 $91, $0F, $04, $BC, $6A, $27, $5A, $64

Tune R3361
FM2 $B2, $1B, $03, $6C, $24, $23, $68, $3C
FM5 $B2, $1B, $05, $6C, $7A, $2C, $23, $64

Tune R3652
FM2 $B2, $1B, $03, $6C, $24, $23, $68, $3C
FM5 $B2, $1B, $05, $6C, $7A, $2C, $51, $64

Looking at R3361/R3362 and Joel’s issue with high RPM it appears X2010 values as low as $23 in FM5 were in favour for those tune versions. It’s noticeable that the FM2 value of $68 is consistent throughout. Some other wide variations occur in X200E (a fuel map value) and X2011 (a value for calculating throttle delta)!
Dave, that really is a good discovery plus I'm also pleased to see R3833 has the same data values at R3361. I'm getting all excited at the thought of some real testing.

JOA

5 posts

114 months

Friday 16th January 2015
quotequote all
stevesprint said:
Joel,
I'm very impressed you've been modifying the code, do you use Dan's rebuild project? It's my favorite toy. Do you mean you've modified the data at C222 & C223 or the code below that uses the data at C222 & C223? I guess this could vary depending on which revision you are working on.
Hum, prepare to be unimpressed. What I did was change the code in Dan's rebuild project from this:


;---------------------------------------------------------------------------------------------------
; Determine if Rich or Lean
;
; X201B (right) and X201C (left) are offset or bias values that are added to the threshold value
; The data value XC098 (usually zero) is also added/subtracted as an addition bias.
;
; From Wikipedia: lean mixture causes low voltage (excess oxygen)
; rich mixture causes high voltage (depleted O2)
;
;---------------------------------------------------------------------------------------------------
.LE21D pulb ; pull the HO2 reading reading
ldaa $00BD ; this is working value from X00BE (right) or X00BF (rt)
bne .LE23A ; branch if value is not zero

ldaa o2ReferenceSense ; load the HO2 threshold value
tst $0088 ; test bank indicator bit
bmi .LE22E ; branch ahead if bit is 1 (left bank)

adda $201B ; Right: add X201B to HO2 reference value
bra .LE231

.LE22E adda $201C ; Left: add X201C to HO2 reference value

.LE231 cba ; A (ref plus X201B or X201C) minus B (HO2 reading)
bcs .LE243 ; branch if HO2 reading is higher than reference value

suba $C098 ; Lean: data value is zero, subtract from reference
cba ; result still positive, since value is zero
bcc .LE25A ; branch to jmp to lean_condition code

.LE23A ldaa $0089 ; code jumps here if X00BD value is non-zero
bita #$40 ; test X0089.6
beq .LE2B0 ; if zero, branch to jump to LE459 (into lean code)

.LE240 jmp .LE2EF ; jump down (into rich_condition code)
;--------------------------------------------------


To this:

;---------------------------------------------------------------------------------------------------
; Determine if Rich or Lean
;
; X201B (right) and X201C (left) are offset or bias values that are added to the threshold value
; The data value XC098 (usually zero) is also added/subtracted as an addition bias.
;
; From Wikipedia: lean mixture causes low voltage (excess oxygen)
; rich mixture causes high voltage (depleted O2)
;
;---------------------------------------------------------------------------------------------------
.LE21D pulb ; pull the HO2 reading reading
ldaa $00BD ; this is working value from X00BE (right) or X00BF (rt)
bne .LE23A ; branch if value is not zero

ldaa #23 ; load the HO2 threshold value
tst $0088 ; test bank indicator bit
bmi .LE22E ; branch ahead if bit is 1 (left bank)

adda $201B ; Right: add X201B to HO2 reference value
bra .LE231

.LE22E adda $201C ; Left: add X201C to HO2 reference value

.LE231 cba ; A (ref plus X201B or X201C) minus B (HO2 reading)
bcs .LE243 ; branch if HO2 reading is higher than reference value

suba $C098 ; Lean: data value is zero, subtract from reference
cba ; result still positive, since value is zero
bcc .LE25A ; branch to jmp to lean_condition code

.LE23A ldaa $0089 ; code jumps here if X00BD value is non-zero
bita #$40 ; test X0089.6
beq .LE2B0 ; if zero, branch to jump to LE459 (into lean code)

.LE240 jmp .LE2EF ; jump down (into rich_condition code)
;--------------------------------------------------


I then did a compare of the .bin files and saw that the code was altered at bin locations X6222 and X6223. When I said I changed the data at C222 and C223 I was trying to translate my .bin locations into what I thought were the ECU addressing. Maybe I should have said E222 and E223, or maybe I am just demonstrating more ignorance? Anyway, I altered the machine code at the same locations in my R3362 bin to force an immediate address and load the value of #23. Don't ask why I chose 23. Once I had the car idling on this code I altered the value and watched the AFR for changes. I was able to force the AFR to around 14.0 by using a value of around 59 decimal which I believe is close to 1.15volts. These results don't really make any sense to me since that seems quite out of range of the O2 sensor voltage. I was going to go back in to the code and remove the bias values at x201B and x201C and retry this test. I think these bias values might be responsible for the switching of the O2 sensors, i.e., the effect you mentioned in your previous post, which might be making it difficult to alter the AFR by changing the o2referenceSense.

blitzracing

6,387 posts

220 months

Friday 16th January 2015
quotequote all
JOA said:
I was able to force the AFR to around 14.0 by using a value of around 59 decimal which I believe is close to 1.15volts. These results don't really make any sense to me since that seems quite out of range of the O2 sensor voltage. I was going to go back in to the code and remove the bias values at x201B and x201C and retry this test. I think these bias values might be responsible for the switching of the O2 sensors, i.e., the effect you mentioned in your previous post, which might be making it difficult to alter the AFR by changing the o2referenceSense.
The probe will go up to about 1.35 volts if you run the mixture rich enough. I spent a long time trying to use bar graph LED displays to pull the useful mixture values between 1 and 1.3 volts without using wideband sensors- typically you can get the probe to read up to about 12.5:1 AFR at the rich end before it flat lines- but the voltage is not consistent between probes, I expect the response changes as the probe ages. The voltage change from 1 to 1.3 volts is relatively small for quite large mixture changes, as you you expect.

jjohnson23

700 posts

113 months

Friday 16th January 2015
quotequote all
Steve,I only managed to fix that board using a microscope and special soldering equipment,if I had not been so hamfisted in removing that original prom I would have been ok.
I just hope others learn from my mistakes and do EXACTLY what your instructions say when removing the original prom.
On the plus side is the fact that the board is tough enough to undergo 2 removal cycles and still work ok if you are careful!

stevesprint

Original Poster:

1,114 posts

179 months

Friday 16th January 2015
quotequote all
JOA said:
I then did a compare of the .bin files and saw that the code was altered at bin locations X6222 and X6223. When I said I changed the data at C222 and C223 I was trying to translate my .bin locations into what I thought were the ECU addressing .......
That now makes perfect sense and I’m still impressed you’re trying to run closed loop with an AFR other than 14.7. I once caused Dave sleepless nights when I confused prom offsets with processor addressing. I finally got the hang of it as I now do all my work in Dan’s Rebuild project in conjunction with the RogerGauge logger and my AFR logger. I’ll upload the latest version of my AFR logger in case you are interested, what Wideband sensor do you have?

You could try re-mapping map 2 carefully as you maybe surprised how accurate the fuelling is. Its mainly sudden throttle movements that throws out the AFR by design for both open and closed loop. Also, don’t forget map 5 goes open loop above 3,400rpm or more than 40% throttle.

jjohnson23

700 posts

113 months

Tuesday 27th January 2015
quotequote all
Well the weather today was good enough for me to check over and fire up the old v8.Might as well tell you now it is in a TR7!
After it had warmed up a little I fitted the repaired ecu with an EEPROM burnt with Steve Sprints R3652 TVR 400 hybrid tune.
I fired it up and set airflow meter for smoothest idle,this corresponded with 1.4 volts on ROVERGAUGE as he recommends,what a difference its made.
Gone is the little bit of hesitation on pressing the accelerator pedal and the engine sounds so much smoother.Nice work Steve.
What surprised me the most was the fact my engine is only a 3500,admitedly with mildly cleaned up heads and a Kent h200 cam.
Will not be able to test it on the road till Sunday(1 FEB)but if it goes well I will be a happy man.(I altered the idle speed down to 700 rpm in the software as the idle seemed too high but its still smooth).Will report when I have more info.
I still cannot get over how excellent ROVERGAUGE is,especially as a diagnostic tool.If it cost 50 quid it would still be a bargain,don`t know how I managed without it to be honest.Tunerpro is bloody good as well,makes altering software quicker.
A BIG BIG THANK YOU TO DAN,COLIN,STEVE and everyone else who has contributed to this thread.


danbourassa

246 posts

137 months

Wednesday 28th January 2015
quotequote all
You're welcome, Paul. And let's add Blitz and Dave to the list. They have also contributed greatly.

TomcatErik

18 posts

111 months

Wednesday 28th January 2015
quotequote all
I am working on mapping a tuned Bowler Tomcat with a 3.9L V8. Thank you for the efforts guys, as this saves me the hassle from swapping ECU's with an open system. I am just starting but are able to connect to the ECU, change mappings and rebuild the project of Dan. While reading the thread I've been updating the TunerPro XDF for this interested. I've added all tables for all tunes and corrected some offsets (should now be all above 0x4000). I also added the TUNE ID, MIL enable and overrun fueling. If someone could provide me with an e-mail address I'll be glad to send the XDF for sharing.

Meanwhile I hope to receive my Ostrich 2.0 and 20AM MAF sensor somewhere next week so I can start adjusting for real. Hope that the injectors can keep up (ERR772A) otherwise I might need to swap the injectors. Can anyone provide the number of the TVR430 ones, I assume these are bigger given the higher power output?

PS
I also have dumps of a R2666 ROM and a R3157 ROM, where remarkably the R3157 ROM uses the "old" offsets and the R2666 ROM uses the "new" offsets.

Edited by TomcatErik on Wednesday 28th January 14:53

spitfire4v8

3,992 posts

181 months

Wednesday 28th January 2015
quotequote all
You could send your xdf to stevesprint who is building a nice collection of must-have tuning info on his own website.
The injectors used on all the tvrs right up to the 5 litre are the std land rover lucas units.

stevesprint

Original Poster:

1,114 posts

179 months

Wednesday 28th January 2015
quotequote all
TomcatErik said:
I've added all tables for all tunes and corrected some offsets (should now be all above 0x4000). I also added the TUNE ID, MIL enable and overrun fueling. If someone could provide me with an e-mail address I'll be glad to send the XDF for sharing.
Erik
I'm delighted to hear you've got off to a flying start with TunerPro and added more tables and tuning options.

If you email me your XDF file I’ll make the main table column headings dynamic, so they display the correct rpm points for extended main fuel tables, and I'll upload it to http://www.stevesprint.com/remap-14cux/gadgets.htm... . I’ll also add the throttle, start-up and temperature tables that Paul requested.

TomcatErik said:
I also have dumps of a R2666 ROM and a R3157 ROM, where remarkably the R3157 ROM uses the "old" offsets and the R2666 ROM uses the "new" offsets.
R3157 is a huge surprise and sounds interesting, does the fuel table display correctly in RoverGauge? Please can you email me a copy and I’ll also upload it to my website for Dan & Dave to see. I’ve PM’ed you my email address.

Thank you in anticipation, Cheers
Steve Sprint
P.S. Bowler Tomcats look amazing fun!!!

stevesprint

Original Poster:

1,114 posts

179 months

Wednesday 28th January 2015
quotequote all
jjohnson23 said:
Well the weather today was good enough for me to check over and fire up the old v8.Might as well tell you now it is in a TR7!
After it had warmed up a little I fitted the repaired ecu with an EEPROM burnt with Steve Sprints R3652 TVR 400 hybrid tune.
I fired it up and set airflow meter for smoothest idle,this corresponded with 1.4 volts on ROVERGAUGE as he recommends,what a difference its made.
Gone is the little bit of hesitation on pressing the accelerator pedal and the engine sounds so much smoother.Nice work Steve.
What surprised me the most was the fact my engine is only a 3500,admitedly with mildly cleaned up heads and a Kent h200 cam.
Will not be able to test it on the road till Sunday(1 FEB)but if it goes well I will be a happy man.(I altered the idle speed down to 700 rpm in the software as the idle seemed too high but its still smooth).Will report when I have more info.
I still cannot get over how excellent ROVERGAUGE is,especially as a diagnostic tool.If it cost 50 quid it would still be a bargain,don`t know how I managed without it to be honest.Tunerpro is bloody good as well,makes altering software quicker.
A BIG BIG THANK YOU TO DAN,COLIN,STEVE and everyone else who has contributed to this thread.
Thanks for the positive feed back, it sounds like we may need to find a 3.5 map for me to copy into R3652 for you. It will be interesting to hear how your AFR is and if you hit the bottom row of the fuel table on full throttle.

There is nothing wrong with a TR7, I owned and loved one for 19 years and installed a 14CUX 3.9.


danbourassa said:
You're welcome, Paul. And let's add Blitz and Dave to the list. They have also contributed greatly.
Hear, hear

TomcatErik

18 posts

111 months

Thursday 29th January 2015
quotequote all
I don't know if the maps are displayed correctly in rovergauge as I haven't had the car running with this ECU (was a spare ECU that came with the Tomcat). I have no access to the car for 1 week so until then I cannot test it. The EPROM (Intel 27C128) had a handwritten label on it with "3157" and a green dot. The label had a vague red watermark on it with "GP" in italic letters.

The Tomcat has a rover V8 with a TVR exhaust system, John Eales stage 3 heads, a 40D engine base, a flowed inlet manifold shorter turrets and....
an ECU running the stock R2666 map 1 confused. Therefore I'll be putting some effort in adjusting the fuel map as I suspect it is running lean and hitting the speed limiter (gearbox is from a defender TD5, gears replaced with straight-cut).

stevesprint

Original Poster:

1,114 posts

179 months

Thursday 29th January 2015
quotequote all
TomcatErik said:
I also have dumps of a R2666 ROM and a R3157 ROM, where remarkably the R3157 ROM uses the "old" offsets and the R2666 ROM uses the "new" offsets.
Erik
Thanks for the TunerPro XDF and R3157 files. I’ll merge your TunerPro XDF file with mine over the weekend and upload it to my website.

I’m sure you don’t mind I forwarded your R3157 to Dan and Dav. We all agree it appears to be a corrupt R2157 bin file and therefore may not be safe to use. If it wasn’t for the hand written label with R3157 it could have just been an issue with your eprom reader. What chip type do you select to read the 27C128 eprom??? It might be worth email me a copy of your R2666 read with your eprom reader to confirm your reader is ok.

Cheers, Steve