Some users would like to read the first bytes rather than last bytes.
Let's assume that there's a number 04 3D3A 3277 3280 (HEX) but you want to read the first 4 bytes(04 3D3A 32) rather than the last 4 bytes(3277 3280). This is impossible with the official FW.
The reason is the FW first reads the ID total bit first from the position 0 to the total bit(regardless of ID start/end bit), then FW fills the rest of bits with zeros only when it sends out via Wiegand out.
Let me explain the whole process of truncating CSN numbers in the FW.
1. FW reads the full CSN number (56 bits)
00000100 00111101 00111010 00110010 01110111 00110010 10000000
(Hex : 04 3D3A 3277 3280)
2. FW reads the total ID bits from the last bit(32 bits)
00000100 00111101 00111010 00110010 01110111 00110010 10000000
(Hex : 3277 3280)
3. FW positions the data above with defined start/end bit (BioStart 2 shows this value)
00110010 01110111 00110010 10000000
(Hex : 3277 3280)
4. The FW fills the rest with 0 and then sends it out to Wiegand out
00110010 01110111 00110010 10000000 00000000 00000000 00000000
(Hex : 32 7732 8000 0000)
It is designed since most of the users want to read the last bytes rather than the first bytes of the CSN data and there's no standard in reading Wiegand data.
In conclusion, custom FW is required to read only the top data of the CSN.