LSM9DS1 SDO always 0
Hey folks,
I've fabricated a little PCB to glue an LSM9DS1 to an ESP32-S3. As far as I can see, the ESP32 is sending the correct signals but the LSM9DS1 isn't returning anything useful. Here's what I get when I try to read 0x0F, the WHOAMI register, from both the accel/gyro and magnetometer. Signals are CS, SDI, SPC, SDO, in that order:

As you can see, SDI shows 0x8F and SDO shows 0xFF while the master is sending but 0x00 while the master is receiving.
This is really weird to me because it tells me that the SPI communication is working but the slave device is responding with 0x00.
What on earth might cause this? As far as I can tell, the signals match the datasheet specification pretty much exactly. At the moment my leading theory is that the ICs I got are counterfeit. The PCB was ordered assembled through JLCPCB, which uses LCSC. If it means anything, the IC is marked 2108 9S1 23BOE:

Here's my schematic as well:

