Import
Methods
Method Reference
Net.get(name, type=NetType.I2C)
Get an I2C net by name.
Returns: I2C Net instance
config(frequency_hz, pull_ups)
Configure I2C bus parameters. Only explicitly-provided parameters are changed; omitted parameters retain their stored values.
scan(start_addr, end_addr)
Scan the I2C bus for connected devices.
Returns:
list[int] - List of 7-bit addresses that responded with ACK
read(address, num_bytes, output_format, overrides)
Read bytes from an I2C device.
Returns:
list[int] - Received bytes as integers (when output_format="list")
write(address, data, overrides)
Write bytes to an I2C device.
write_read(address, data, num_bytes, output_format, overrides)
Write then read in a single I2C transaction using a repeated start condition. This is the standard pattern for reading device registers.
Returns:
list[int] - Received bytes as integers (when output_format="list")
get_config()
Get the raw net configuration dictionary.
dict - Full net configuration including name, role, instrument, and params
Output Formats
Theoutput_format parameter on read() and write_read() controls how data is returned:
Examples
Basic Device Read
Register Read/Write
Bus Configuration
Multi-Device Setup
Per-Call Configuration Override
Supported Hardware
Multi-channel FTDI adapters
An FTDI net takes its channel fromparams.interface on the net record, accepting
A-D or 0-3. Set it with lager nets add --interface. A net with no
interface uses channel A, the only choice on a single-channel FT232H.
I2C runs over the FTDI part’s MPSSE engine, and on an FT4232H only channels A and B have one.
lager nets add refuses C or D for an I2C net. A net record edited by hand with C or D fails when the net opens, and the error names the channel.
See Nets for how channels are assigned across net
types on one chip.
LabJack U3
- I2C on a U3 needs U3 hardware version 1.21 or later. The U3 is a bus master only.
- The U3 has no pull-up resistors. Connect external resistors from SDA and SCL to VS; LabJack recommends 4.7 kΩ. Without them, every address sends a NAK and
scan()returns an empty list. pull_upshas no effect on a U3.- A transaction writes at most 50 bytes and reads at most 52 bytes. A larger transaction raises an error.
- The clock runs from about 10 kHz to 150 kHz, and it is never faster than
frequency_hz. A request outside that range is clamped, with a warning on the standard error output of the script. write()andwrite_read()check the acknowledgement of the address and of each byte. The error names the first byte that the device refused. For a write of 31 bytes or more, the error does not name the byte.FIO0-FIO3cannot carry I2C. The driver raises an error for a net that uses them.
Notes
- Net must be configured as
NetType.I2C - Addresses are 7-bit format (
0x00-0x7F), not left-shifted pull_upsonly works on the Aardvark adapter; ignored on LabJack T7 and LabJack U3write_read()uses a repeated start condition for atomic register reads- Default scan range (
0x08-0x77) skips reserved addresses - Configuration changes persist to
saved_nets.jsonfor subsequent commands - LabJack T7 maps the requested frequency to a clock throttle, from about 130 Hz to 450 kHz
- LabJack U3 runs from about 10 kHz to 150 kHz

