Initializing an object returns NAK if the i2c bus is not probed before. This code segment is required for any device to be connected to the bus, which should not be the case. for (int i = 0; i < 0xFF; i++) { auto res = hal::probe(i2c, i); }