Hello,
First, thank you for the amazing work ! I was really new over the OBD-II standard and I could have ramp-up on this thanks to the script.
I do not believe I found a bug but this is maybe kind of future improvements. For example, my car is a Renault Clio IV from 2016 and when I am requesting for the "0101" or "0100" the ELM gives back 12 bytes of data (if I do not count the \n ) which can be this :
>0100
41 00 BE 3E A8 13
41 00 88 18 00 11
>0101
41 01 00 07 A1 00
41 01 00 04 00 00
And in your script you consider first 2 bytes as the prune data, and the next 4 bytes are used for interpretation which means the second word I got back is not processed.
After some researches, it figures that several ECU may respond to any OBD service. And after turning on the hidden frame headers with the AT H1 command, it seems that the first word is coming from the "7E8" guy (the Engine Control Unit) and the other from the "7E9" guy (the Transmission Control Unit) and I am not sure if Engine is always answering the first or not.
For instance I had some DTC from the TCU and I had to make small fixes to mask the headers when doing the AT commands because in the actual script snapshot, it did not show up.
I don't know what could be the best way to improve it and if you already heard of that but at least you are now aware.
(In terms of hardware I have a OBDII-2-UART from Sparkfun with a STN1110 chip (elm v1.4b) which is not categorized as a "Fake ELM device" by your last commit :) )