I have seen something similar before. The middleware/drivers modify the CLA in transit so it is not the value your applet expects - the modification will depend on the transfer protocol (SWP in your case, I assume).
The first step should be to check what value is received by your applet. Change your applet to simply return (echo) the entire incoming APDU and proceed from there.
Also have a look at single wire protocol (SWP) standard ETSI TS 102 613.
I recommend you read these documents about CLA and logical channels:
There is much more info about CLA in the ISO7816-3 and ISO7816-4 specification.
Hope this helps.