US_FIDI_FI_DI_RATIO_Msk is 0x7ff, cemu rejected >= 0x400 in emu_update_fidi() and masked with 0x3ff in card_emu_uart_update_fidi(), but update_fidi() used by the sniffer already used 0x7ff.
-> ratios 1024..2047 are unusable in cemu, which is the entire upper half of ISO 7816-3 Table 7 at Di=1.
A reader trying one of those in a PPS gets the proposal echoed and accepted, after which the card keeps transmitting at the old rate.
FI_DI_RATIO is clock periods per bit -> larger ratio is a SLOWER link. The old check rejected slow values but accepted Fi=372/Di=64, ratio 5 !?
Unify and use the register mask (= shifed by 0 so usable as value) and reject ratios that do not fit rather than truncating to garbage dividers.