eeprom - EEPROM API
Quickstart
Example: dump the EEPROM content
# Instantiate an EEPROM manager
eeprom = FtdiEeprom()
# Select the FTDI device to access (the interface is mandatory but any
# valid interface for the device fits)
eeprom.open('ftdi://ftdi:2232h/1')
# Show the EEPROM content
eeprom.dump_config()
# Show the raw EEPROM content
from pyftdi.misc import hexdump
print(hexdump(eeprom.data))
Example: update the serial number
# Instantiate an EEPROM manager
eeprom = FtdiEeprom()
# Select the FTDI device to access
eeprom.open('ftdi://ftdi:2232h/1')
# Change the serial number
eeprom.set_serial_number('123456')
# Commit the change to the EEPROM
eeprom.commit(dry_run=False)
Classes
- class pyftdi.eeprom.FtdiEeprom
FTDI EEPROM management
- CBUS
Alternate features for legacy FT232R devices.
alias of
CBus
- CBUSH
Alternate features for FT232H/FT2232H/FT4232H devices.
alias of
CBusH
- CBUSX
Alternate features for FT230X devices.
alias of
CBusX
- CFG1
Configuration bits stored @ 0x01.
alias of
Cfg1
- CHANNEL
Alternate port mode.
alias of
Channel
- DRIVE
Driver options for I/O pins.
alias of
Drive
- UART_BITS
Inversion flags for FT232R and FT-X devices.
alias of
UartBits
- VAR_STRINGS = ('manufacturer', 'product', 'serial')
EEPROM strings with variable length.
- property cbus_mask: int
Return the bitmask of CBUS pins configured as GPIO.
The bitmap contains four bits, ordered in natural order.
- Returns:
CBUS mask
- property cbus_pins: List[int]
Return the list of CBUS pins configured as GPIO, if any
- Returns:
list of CBUS pins
- close()
Close the current connection to the FTDI USB device,
- Return type:
None
- commit(dry_run=True, no_crc=False)
Commit any changes to the EEPROM.
- Parameters:
dry_run (
bool) – log what should be written, do not actually change the EEPROM contentno_crc (
bool) – do not compute EEPROM CRC. This should only be used to perform a full erasure of the EEPROM, as an attempt to recover from a corrupted config.
- Return type:
bool- Returns:
True if some changes have been committed to the EEPROM
- connect(ftdi, ignore=False)
Connect a FTDI EEPROM to an existing Ftdi instance.
- Parameters:
ftdi (
Ftdi) – the Ftdi instance to useignore (
bool) – whether to ignore existing content
- Return type:
None
- property data: bytes
Returns the content of the EEPROM.
- Returns:
the content as bytes.
- property default_size: int
Report the default EEPROM size based on the FTDI type.
The physical EEPROM size may be greater or lower, depending on the actual connected EEPROM device.
- Returns:
the size in bytes
- property device_version: int
Report the version of the FTDI device.
- Returns:
the release
- dump_config(file=None)
Dump the configuration to a file.
- Parameters:
file (
Optional[BinaryIO]) – the output file, default to stdout- Return type:
None
- enable_mirroring(enable)
Enable EEPROM write mirroring. When enabled, this divides the EEPROM into 2 sectors and mirrors configuration data between them.
For example on a 256 byte EEPROM, two 128 byte ‘sectors’ will be used to store identical data. Configuration properties/strings will be writen to both of these sectors. For some devices (like the 4232H), this makes the PyFtdi EEPROM functionally similar to FT_PROG.
Note: Data will only be mirrored if the has_mirroring property returns true (after establishing a connection to the ftdi)
- Parameters:
enable (
bool) – enable or disable EEPROM mirroring- Return type:
None
- erase(erase_byte=255)
Erase the whole EEPROM.
- Parameters:
erase_byte (
Optional[int]) – Optional erase byte to use. Default to 0xFF- Return type:
None
- property has_mirroring: bool
Report whether the device supports EEPROM content duplication across its two sectors.
- Returns:
True if the device support mirorring
- initialize()
Initialize the EEPROM with some default sensible values.
- Return type:
None
- property is_empty: bool
Reports whether the EEPROM has been erased, or no EEPROM is connected to the FTDI EEPROM port.
- Returns:
True if no content is detected
- property is_mirroring_enabled: bool
Check if EEPROM mirroring is currently enabled for this EEPROM. See enable_mirroring for more details on EEPROM mirroring functionality
- load_config(file, section=None)
Load the EEPROM content from an INI stream.
The
sectionargument selects which section(s) to load:rawonly loads the raw data (hexabytes) from a previous dumpvaluesonly loads the values section, that is the human readable configuration.all, which is the default section selection, load the raw section, then overwrite part of it with any configuration value from thevaluessection. This provides a handy way to use an existing dump from a valid EEPROM content, while customizing some parameters, such as the serial number.
- Parameters:
file (
TextIO) – input stream- Paran section:
which section to load from the ini file
- Return type:
None
- property mirror_sector: int
Report start address of the mirror sector in the EEPROM. This is only valid if the FTDI is capable of mirroring EEPROM data.
- Returns:
the start address
- open(device, ignore=False, size=None, model=None)
Open a new connection to the FTDI USB device.
- Parameters:
device (
Union[str,Device]) – the device URL or a USB device instance.ignore (
bool) – whether to ignore existing contentsize (
Optional[int]) – a custom EEPROM sizemodel (
Optional[str]) – the EEPROM model used to specify a custom size
- Return type:
None
- property properties: Set[str]
Returns the supported properties for the current device.
- Returns:
the supported properies.
- reset_device()
Execute a USB device reset.
- save_config(file)
Save the EEPROM content as an INI stream.
- Parameters:
file (
TextIO) – output stream- Return type:
None
- set_manufacturer_name(manufacturer)
Define a new manufacturer string.
- Return type:
None
- set_product_name(product)
Define a new product name.
- Return type:
None
- set_property(name, value, out=None)
Change the value of a stored property.
- See:
properties()for a list of valid property names. Note that for now, only a small subset of properties can be changed.- Parameters:
name (
str) – the property to changevalue (
Union[str,int,bool]) – the new value (supported values depend on property)out (
Optional[TextIO]) – optional output stream to report hints
- Return type:
None
- set_serial_number(serial)
Define a new serial number.
- Return type:
None
- set_test_mode(enable)
Enable test mode (silence some warnings).
- property size: int
Report the EEPROM size.
Use the most common (default) EEPROM size of the size is not yet known.
- Returns:
the size in bytes
- property storage_size: int
Report the number of EEPROM bytes that can be used for configuration storage. The physical EEPROM size may be greater
- Returns:
the number of bytes in the eeprom that will be used for configuration storage
- sync()
Force re-evaluation of configuration after some changes.
This API is not useful for regular usage, but might help for testing when the EEPROM does not go through a full save/load cycle
- Return type:
None
Exceptions
- exception pyftdi.eeprom.FtdiEepromError
FTDI EEPROM error.
Tests
# optional: specify an alternative FTDI device
export FTDI_DEVICE=ftdi://ftdi:2232h/1
PYTHONPATH=. python3 pyftdi/tests/eeprom.py