From 25b4a83d4ceadb74b4b6ecbc3bf4987b4d013551 Mon Sep 17 00:00:00 2001 From: Javier Carrasco Date: Sun, 21 Jan 2024 20:47:03 +0100 Subject: [PATCH] posts: i2c on Linux --- _posts/2024-01-25-i2c-on-linux.md | 487 ++++++++++++++++++ .../hts221-menuconfig.jpg | Bin 0 -> 83528 bytes .../2024-01-25-i2c-on-linux/hts221-setup.jpg | Bin 0 -> 374232 bytes .../i2c_stub-menuconfig.jpg | Bin 0 -> 80771 bytes .../raspi-config-i2c.jpg | Bin 0 -> 48514 bytes .../2024-01-25-i2c-on-linux/raspi-config.jpg | Bin 0 -> 48369 bytes .../posts/2024-01-25-i2c-on-linux/worse.jpg | Bin 0 -> 24528 bytes tag/i2c.md | 5 + 8 files changed, 492 insertions(+) create mode 100644 _posts/2024-01-25-i2c-on-linux.md create mode 100644 images/posts/2024-01-25-i2c-on-linux/hts221-menuconfig.jpg create mode 100644 images/posts/2024-01-25-i2c-on-linux/hts221-setup.jpg create mode 100644 images/posts/2024-01-25-i2c-on-linux/i2c_stub-menuconfig.jpg create mode 100644 images/posts/2024-01-25-i2c-on-linux/raspi-config-i2c.jpg create mode 100644 images/posts/2024-01-25-i2c-on-linux/raspi-config.jpg create mode 100644 images/posts/2024-01-25-i2c-on-linux/worse.jpg create mode 100644 tag/i2c.md diff --git a/_posts/2024-01-25-i2c-on-linux.md b/_posts/2024-01-25-i2c-on-linux.md new file mode 100644 index 0000000000..45c4890b7d --- /dev/null +++ b/_posts/2024-01-25-i2c-on-linux.md @@ -0,0 +1,487 @@ +--- +layout: post +title: Dealing with I2C devices on Linux +date: 2024-01-25 10:00:00 +summary: Handling real and virtual I2C devices is easy, if you know how +tags: drivers i2c linux raspberrypi soc +--- + +I2C is a very simple communication protocol, yet widely used in embedded systems. There are literally thousands of different devices that use (at least) I2C to deliver information to any controller that supports that protocol. + +Good news: Linux supports I2C, and hundreds of the drivers in the kernel use I2C as their main/only communication protocol. Moreover, there are several tools available to manage such devices from userspace, which also helps in the first stages of the driver development process. Furthermore, you can use those tools to simulate real hardware. + +In this article, I will show you how to work with I2C on Linux, both with virtual and real hardware. + +## Rewriting the specs is boring... and reading them too + +There is definitely no need for another tutorial about how I2C works: start and stop conditions, protocol speeds...nah. This is a hands-on article, and you only need to know this: + +1. There are two I2C lines to connect: a clock, and the data. These lines need pull-up resistors, but many SoCs, like the Raspberry Pi, include them in their design, and you only have to make sure that you connect "clock" to "clock", and "data" to "data". Do you have a *tricky* SoC? Check if the pull-up resistors are included. If not, connect a 4.7K resistor from each I2C line to the power supply. + +2. Connect the power supply: obvious, but in case you know nothing about hardware... if your device is a simple one, it will only require one power supply (3V3 and 5V can be obtained from the Raspberry Pi directly), and ground. Again, another daunting task: connect "GND" to "GND", and "3V3" to "3V3" or the equivalent for the voltage level your device requires. + +3. The I2C device has (usually) a unique address: we will use that address to know where to find the device and communicate with it. + +4. The communication will be **half-duplex**: you access the device to read or write, and wait for a reply. Then you access the device again, and wait for a reply again. That's basically it. Your SoC act as the **master**, and the I2C device as a **slave** i.e. **your SoC is the f* boss** and tells I2C devices when to talk. + +## Enough theory: let's get down to business + +Alright, let's see what we can do with Linux and a real/virtual I2C device. + +### 1. Requirements + +1. **SoC**: for simplicity and coherence with [my previous article](/device-driver-development-with-rpi-setup), I am going to use Raspberry Pi Zero 2 W. + +2. **I2C support in the kernel**. Make sure that `CONFIG_I2C` is selected in your .config. If you followed my previous article, it should be selected already. + +3. **Enabled I2C support for your Raspberry Pi**. This has (once again) something to do with the **device tree**, which I will cover in another article, because otherwise this one will never end :grin: For now, you just want your Raspberry Pi to "enable" I2C. You can do it easily with `raspi-config`, and even more easily in your config.txt: + + a. Editing config.txt: uncomment `dtparam=i2c_arm=on`, which is actually what the comment above that line is telling you to do. + + b. Using `raspi-config`: call `sudo raspi-config` on your Raspberry Pi and select **Interface Options**: +
+ raspi-config +
+ Now select **I4 I2C** and enable. End of the story. +
+ raspi-config-i2c +
+ +4. **i2c-tools package**: `sudo apt install i2c-tools` or the equivalent for your distro. That will install some nice tools to manage I2C devices. + +5. (Optional) **Simple I2C device**. I have connected a humidity sensor called hts221, supported by the kernel under the IIO subsystem. Any other simple I2C device will work similarly. Just make sure that you select the device driver either with menuconfig or directly in the .config file. The latter is faster, but the former automatically selects dependencies. If you are cross-compiling, make sure that you call menuconfig like this: + + `make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig` + +
+ hts221-menuconfig +
+ +6. (Optional) **I2c/SMBus Test Stub support in the kernel**. You will need that for the examples with virtual devices. Select it with menuconfig under `I2C support`, or simply open .config, search for `CONFIG_I2C_STUB`, and modify the line to have this: `CONFIG_I2C_STUB=m` (with no # at the beginning...). + +
+ i2c_stub-menuconfig +
If you don't know what to do here, say [M]aybe
+
+ +### 2. Example with a real I2C device + +If you have a simple device that only requires I2C and one power supply, your setup will look like as simple as this: + +
+ hts221-setup +
This is also all you need to program a device driver. Sometimes even less!
+
+ +The first thing we are going to do after powering our Raspberry Pi is checking if we have an I2C bus on the system with `i2cdetect -l`: + +``` +i2cdetect -l +i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter +i2c-2 i2c bcm2835 (i2c@7e805000) I2C adapter +``` + +Why are there two I2C buses? Well... why not? I never said you can only have one. Actually, some SoCs have 3 or more I2C buses. But don't panic just yet, i2c-2 is used internally for HDMI and only i2c-1 is accessible from the GPIOs. + +Alright, let's see if we have some I2C device connected to our SoC, again with `i2cdetect`. Note the -y argument to confirm that we want to do that and get rid of unnecessary warnings . + +
+ worse +
data loss... and WORSE?? Hell yeah!!
+
+ +```properties +i2cdetect -y 1 + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 5f +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- -- +``` + +That is a beautiful table, isn't it? The important thing is that we see *something* at the address 0x5f. Is that the hts221? Hmm, I did not connect any other device, the hts221 uses the I2C address 0x5f... I am going to risk again and assume it is. I am also going to assume that `--` means *no device with that address is connected*. And the addresses with no symbols? Good catch, they are out of the valid range for I2C devices according to the I2C specification and therefore are not relevant for us. + +Imagine for a moment that there is no driver for this device, and we only want to make sure that we can read values from it. Could we do that from userspace? Sure! According to the datasheet, the internal address 0x0f corresponds to the `WHO_AM_I` read-only register, that always returns 0xbc. We can use `i2cget` for that: + +```properties +i2cget -y 1 0x5f 0x0f +0xbc +``` +What a success story! Could we write data to registers as well? Definitely. The 0x10 internal address corresponds to the `AV_CONF` (resolution mode). Let's select internal averages of 256 for temperature and 512 for humidity (0x3f): + +```properties +i2cget -y 1 0x5f 0x10 +0x10 +i2cset -y 1 0x5f 0x10 0x3f +i2cget -y 1 0x5f 0x10 +0x3f +``` + +By the way, `i2cset` provides the -r argument, which will save you from calling `i2cget` for such checks: + +```properties +i2cset -r -y 1 0x5f 0x10 0x3f +Value 0x3f written, readback matched +``` + +Another tool included in `i2c-tools` is `i2cdump`, which will show us the values of all registers from 0x00 to 0xff, or in a defined range. The hts221 provides registers in the address range 0x00-0x3f, so there is no need to scan further: + +```properties +i2cdump -r 0x00-0x3f -y 1 0x5f b + 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef +00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc ...............? +10: 3f 00 76 32 97 be 62 a2 9e b2 fc 00 d0 01 80 9a ?.v2??b????.???? +20: 00 00 00 00 00 00 00 00 c3 d6 31 00 5b d7 61 00 ........??1.[?a. +30: 3b 89 a7 14 00 c4 f4 ff 99 03 be cd fd ff ea 02 ;???.??.?????.?? +``` + +Ok, I will be honest: I am trying to hide some complexity here. If you dump 0x80-0xbf, you will read the same values... and actually the driver works with the 0x80-0xbf range. Why is that? Because for this device, every internal address consists of 7 bits (6..0) for the register address plus the **MSB** (Most Significant Bit, here bit 7), which is used for something called auto-increment. The auto-increment is used to automatically increase the address pointer for multiple data read and write operations, which is not relevant for these examples. Therefore, 0x80 (0b10000000) means address 0x00 **with** auto-increment, and 0x00 means address 0x00 **without** auto-increment. By the way, the auto-increment feature is not part of the I2C standard and not all devices support it. Anyway, the device driver always uses addresses with the auto-increment enabled, and given that we are going to load the driver later on, we will use the 0x80-0xbf range to write values to registers. This is a good example of why you should always read the datasheet first. + +```properties +i2cdump -r 0x80-0xbf -y 1 0x5f b + 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef +80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bc ...............? +90: 3f 00 76 32 97 be 62 a2 9e b2 fc 00 d0 01 80 9a ?.v2??b????.???? +a0: 00 00 00 00 00 00 00 00 c3 d6 31 00 5b d7 61 00 ........??1.[?a. +b0: 3b 89 a7 14 00 c4 f4 ff 99 03 be cd fd ff ea 02 ;???.??.?????.?? +``` +Note the values stored at 0x8f (`WHO_AM_I`) and 0x90 (`AV_CONF`): the same we got with i2cget when we accessed 0x0f and 0x10. + +`i2cdump` can be useful for reverse-engineering, or combined with `i2c-stub-from-dump` to simulate a device on a system where the target device is not available. More about this later. + +It is worth mentioning that there is yet another tool, called `i2ctransfer`, that can be used to send multiple I2C messages as a single transfer. I have used it a couple of times for very specific devices (mainly EEPROMs) to send multiple messages at once, but I must say that the command structure is complex, impossible to remember, and the chances of messing up are not negligible. If you want to give it a try anyway, read `man i2ctransfer` carefully, especially the examples at the end. If your operations from userspace start getting complex, a simple program with a couple of system calls is usually more flexible, and you will know better what you are doing. Don't worry, I will show you an example at the end of this article. Anyway, I will show you an example. To read 2 consecutive registers (our beloved `WHO_AM_I` and `AV_CONF`), you will send a write message with the register address, followed by two read messages: +```sh +2ctransfer -y 1 w1@0x5f 0x8f r2 +0xbc 0x3f +``` +This was achieved thanks to the auto-increment feature, and if you try the same with 0x0f, you will read 0xbc twice. In the end, the auto-increment was indeed relevant! + +---- + +Now that we know how to turn our SoC into an 8-bit microcontroller, we can get back to the Linux world and use the existing driver for the hts221 instead of accessing registers directly. We can do that easily by writing the device name and its I2C address to the `new_device` property under the i2c-1 bus: + +```sh +sudo su +echo hts221 0x5f > /sys/bus/i2c/devices/i2c-1/new_device +exit +``` +Note that a simple `sudo` will fail because `>` is done by the shell, and not by the `echo` command you executed as `sudo`. If you fear `sudo su`, this is the single-command way to do the same: + +```sh +sudo bash -c "echo hts221 0x5f > /sys/bus/i2c/devices/i2c-1/new_device" +``` + +Hold on, hold on! What do you mean by *device name*? Smart kid. Actually, you have to use the *name* provided in the device driver, so a match can occur. You will find it inside an `i2c_device_id` structure. A single driver could support different devices, and obviously you will have to use the right one for your device. Nonetheless, driver programmers always try to use an obvious name, like it's the case here. If you take a look at the code [here](https://github.com/torvalds/linux/blob/master/drivers/iio/humidity/hts221_i2c.c), you will see that the name has been "hidden", and we have to make some (minimal) extra effort to find it: +```c +/* drivers/iio/humidity/hts221_i2c.c */ +static const struct i2c_device_id hts221_i2c_id_table[] = { + { HTS221_DEV_NAME }, + {}, +}; + +/* drivers/iio/humidity/hts221.h */ +#define HTS221_DEV_NAME "hts221" +``` +Note for driver developers: in general, using the string directly is alright, and you will find many examples where that is done. On the other hand, `HTS221_DEV_NAME` is used in three different files (hts221_{core.c, i2c.c, spi.c}), so having a single source to reference the name is reasonable. + +Moving on, what have we achieved with the previous command? According to `i2cdetect`, the address 0x5f is not accessible anymore: + +```properties +i2cdetect -y 1 + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- -- +``` + +UU?? Did we just brick the hts221? No, but I can tell that you did not open the man page yet (`man i2cdetect`). Keep calm: your device is still alive. If you fried your device somehow, you will see `--` at 0x5f too. Is 0x5f not accessible anymore because the driver was loaded? Well, let's see if we have an IIO device: + +```ssh +ls /sys/bus/iio/devices/ +iio:device0 +``` +How do you know it is not a different device, maybe an internal sensor? Well, we can read the device name and any other information the driver supports: + +```properties +pi@raspberrypi:~ $ cd /sys/bus/iio/devices/iio\:device0 +pi@raspberrypi:/sys/bus/iio/devices/iio:device0 $ ls +current_timestamp_clock in_humidityrelative_oversampling_ratio in_temp_offset in_temp_raw power subsystem +in_humidity_oversampling_ratio_available in_humidityrelative_raw in_temp_oversampling_ratio in_temp_scale sampling_frequency uevent +in_humidityrelative_offset in_humidityrelative_scale in_temp_oversampling_ratio_available name sampling_frequency_available +pi@raspberrypi:/sys/bus/iio/devices/iio:device0 $ cat name +hts221 +``` + +Maybe this is obvious, but just in case you are wondering: you will use the `cat` command to read values from properties, and the `echo` command to write values to properties. + +We can see that this device exposes quite a few properties. We can configure some parameters like oversampling ratios and sampling frequency, and of course, measure relative humidity and temperature. Note that the measurements from IIO devices are often provided as a raw value plus an offset and a scale, and the floating-point processing of this data must be carried out in userspace. + +The formula is straightforward: `(raw + offset) * scale`, so for a simple demonstration we can make use of a one-line bash command with some help from **bc** for floating-point arithmetic to get the current temperature: + +```properties +echo "($(cat in_temp_raw) + $(cat in_temp_offset)) * $(cat in_temp_scale)" | bc +21.747937499 +``` + +That value (in °C) seems reasonable for the room I am in: it is not freezing, but I don't feel like taking off my warm socks :grin: + +### 3. Example with a virtual device + +Why would you ever need to communicate with a device that *is not there*? For a number of reasons, like when you start programming a driver before the part arrives. Any other use case? I used this approach a few weeks ago to make sure that my patches to add support for the [AS7311 UV sensor](https://lore.kernel.org/all/20231220-as7331-v1-0-745b73c27703@gmail.com/) did not break the driver's original target, which I did not have around. So even if you have real hardware, learning this trick can be useful in several situations. + +The first step will be loading the virtual device, which will require the `i2c-stub` module I mentioned before. We will use the 0x5f address again, but we could use any other valid I2C address because that address is not relevant for the driver. + +```ssh +sudo modprobe i2c-stub chip_addr=0x5f +dmesg | grep i2c-stub +[ 52.444769] i2c-stub: Virtual chip at 0x5f +i2cdetect -l +i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter +i2c-2 i2c bcm2835 (i2c@7e805000) I2C adapter +i2c-11 smbus SMBus stub driver SMBus adapter +``` +i2c-11?? Yet another I2C bus, now a virtual one! That makes sense, doesn't it? We don't want to mix real and virtual stuff. Don't worry too much about that *smbus*: for us, it will be *kinda* I2C bus, and the command to load the driver will look like it did for i2c-1. + +The **probe function** in the driver checks the `WHO_AM_I` register, so we will write the expected value accordingly to avoid errors. Again, we are using the address with auto-increment, which is the address the driver will access: + +```ssh +i2cset -r -y 11 0x5f 0x8f 0xbc +Value 0xbc written, readback matched +``` + +I will also write the temperature calibration I got with the dump and some random value to `TEMP_OUT_L` (0x2a -> + 0x80 = 0xaa), so we can check if the driver does what it should. Our last dump read 0x31 from that register, so let's write a higher value (0xcc). Hopefully we will get a higher temperature! + +```ssh +# calibration values +i2cset -r -y 11 0x5f 0xb2 0xa7 +Value 0xa7 written, readback matched +i2cset -r -y 11 0x5f 0xb3 0x14 +Value 0x14 written, readback matched +i2cset -r -y 11 0x5f 0xb5 0xc4 +Value 0xc4 written, readback matched +i2cset -r -y 11 0x5f 0xbc 0xfd +Value 0xfd written, readback matched +i2cset -r -y 11 0x5f 0xbe 0xea +Value 0xea written, readback matched +# my random temperature +i2cset -r -y 11 0x5f 0xaa 0xcc +Value 0xcc written, readback matched +``` + +If I did not miss anything, that should suffice to load the driver: + +```properties +sudo bash -c "echo hts221 0x5f > /sys/bus/i2c/devices/i2c-11/new_device" +i2cdetect -y 11 + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- -- +cd /sys/bus/iio/devices/iio\:device0/ +cat name +hts221 +echo "($(cat in_temp_raw) + $(cat in_temp_offset)) * $(cat in_temp_scale)" | bc +56.015499999 +``` +Goodbye, winter socks! + +### 4. Much cooler with i2c-sub-from-dump + +In this example, we are going to use both the real and the virtual device. + +If you want to be able to simulate your real device in the future in case *something unexpected happens* (e.g. your dog ate it, and you have to order a second one), there is a nice trick you might want to know. +I am going to make use of the `i2c-stub-from-dump` tool I mentioned before, so we can assign meaningful values to all registers with a single command. + +First, we are going to call `i2cdump` and save its output: + +```ssh +i2cdump -r 0x80-0xbf -y 1 0x5f b > hts221.dump +``` + +We will not need the real device anymore: disconnect it if you like. Now we can use the file we just generated to create the virtual device: + +```ssh +sudo i2c-stub-from-dump 0x5f hts221.dump +64 byte values written to 11-005f +sudo bash -c "echo hts221 0x5f > /sys/bus/i2c/devices/i2c-11/new_device" +``` + +And now, the final test... can we really measure the room temperature with this virtual device? + +```ssh +cd /sys/bus/iio/devices/iio\:device0/ +cat name +hts221 +echo "($(cat in_temp_raw) + $(cat in_temp_offset)) * $(cat in_temp_scale)" | bc +22.293562499 +``` + +Is that not satisfying?? Of course, we are getting the value the device measured when we saved the dump, but still! Would you rather write all values in all registers one by one every time? Come on, you have to admit it was cool! No? Bah, at least I tried... + +### 5. Last userspace bullet: ioctl(), read() and write() + +If none of the tools I showed you suits the complexity of your task, and for some reason you don't want to program a kernel driver, there is still a relatively easy solution to access your I2C device: programming your own tool. By the way, refusing to program a kernel driver does not necessarily mean that you are a noob, and it might make sense under certain circumstances. There is even [this presentation](https://www.youtube.com/watch?v=QIO2pJqMxjE&t=196s) at the *Embedded Linux Conference* about that topic. And the presenter (Chris Simmonds) is definitely not a noob. + +It only took me a few minutes to code an example to validate `WHO_AM_I` and write 0x3f to `AV_CONF`, like we did before with `i2cget` and `i2cset`. I just made sure it works, so feel free to optimize it, and add complexity as required. + +This simple program does the following: +1. Initialization: Open the I2C bus file descriptor (remember, the real device was connected to i2c-1), and provide the device address through ioctl(). +2. Read the `WHO_AM_I` register. This requires a write() to set the register address, and a read() to retrieve the value. +3. Check that `WHO_AM_I` is valid. Trivial, it must be 0xbc. +4. Write a new value to `AV_CONF`. Again, a write() to set the register address is required, followed by a second write() with the new value. For simplicity, 0x3f is always written. + +```c +/****************************___hts221_i2c___****************************/ +#include +#include +#include +#include +#include +#include +/* i2c-specific includes */ +#include +#include +/* support for ioctl */ +#include + +int hts221_i2c_init(void) +{ + const char *i2c_bus = "/dev/i2c-1"; + const char i2c_address = 0x5f; + int fd, ret; + + /* I2C bus file descriptor */ + fd = open(i2c_bus, O_RDWR); + if(fd < 0) + return fd; + + /* set slave address through ioctl I2C_SLAVE */ + ret = ioctl(fd, I2C_SLAVE, i2c_address); + if(ret < 0) + { + close(fd); + return ret; + } + + return fd; +} + +int hts221_i2c_who_am_i(int fd) +{ + const char who_am_i_addr = 0x0f; + char reg; + + /* write address to access: WHO_AM_I = 0x0f */ + if(write(fd, &who_am_i_addr, sizeof(who_am_i_addr)) != sizeof(who_am_i_addr)) + { + printf("i2c write failed: %s\n", strerror(errno)); + return -1; + } + /* operation: read 1 byte */ + if(read(fd, ®, sizeof(reg)) != sizeof(reg)) + { + printf("i2c read failed: %s\n", strerror(errno)); + return -1; + } + + return reg; +} + +int hts221_i2c_av_config(int fd, char val) +{ + const char av_config_addr = 0x10; + + /* write address to access: AV_CONFIG has address 0x10 */ + if(write(fd, &av_config_addr, sizeof(av_config_addr)) != sizeof(av_config_addr)) + { + printf("i2c write failed: %s\n", strerror(errno)); + return -1; + } + /* operation: write 1 byte (the new value for AV_CONFIG) */ + if(write(fd, &val, sizeof(val)) != sizeof(val)) + { + printf("i2c write failed: %s\n", strerror(errno)); + return -1; + } + + return 0; +} + +int main (void) +{ + const char hts221_who_am_i = 0xbc; + const char hardcoded_av = 0x3f; + char who_am_i; + int fd; + + fd = hts221_i2c_init(); + if (fd < 0) { + printf("i2c init failed\n"); + return -1; + } + who_am_i = hts221_i2c_who_am_i(fd); + if (who_am_i < 0 || who_am_i != hts221_who_am_i) { + printf("WHO_AM_I check failed\n"); + return -1; + } + + printf("WHO_AM_I succeeded (%#01x)\n", who_am_i); + + if(hts221_i2c_av_config(fd, hardcoded_av)) { + printf("failed to update AV_CONFIG\n"); + return -1; + } + + printf("%#01x was written to AV_CONFIG \n", hardcoded_av); + + return 0; +} +``` + +Don't forget that you have to compile this program for your **target**, not for your **host**. You have to admit that you were ready to call `gcc` on your Intel/AMD :grin: + +If your target is a Raspberry Pi or any other ARM64-based SoC, and your host has an x86 CPU: + +``` +# on the HOST: +# 1. compile: +aarch64-linux-gnu-gcc hts221_i2c.c -o hts221_i2c +# 2. copy binary to target: +scp hts221_i2c pi@raspberrypi.local:/home/pi +pi@raspberrypi.local's password: +hts221_i2c 100% 69KB 1.6MB/s 00:00 + +# on the TARGET: +./hts221_i2c +WHO_AM_I succeeded (0xbc) +0x3f was written to AV_CONFIG + +# trivia: command to check the file type? +file hts221_i2c +hts221_i2c: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=e7fff0755ff8f6698207ae07b58681ee81cdda61, for GNU/Linux 3.7.0, not stripped +``` + +I failed to write a short article, but at least I showed you quite a few tricks, didn't I? If you make use of half of them, I am pretty sure that you will always keep I2C devices under control. + +

+Enjoy and share knowledge! diff --git a/images/posts/2024-01-25-i2c-on-linux/hts221-menuconfig.jpg b/images/posts/2024-01-25-i2c-on-linux/hts221-menuconfig.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea8ce317d81570b83545ca92bf9086e5332a342c GIT binary patch literal 83528 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 literal 0 HcmV?d00001 diff --git a/images/posts/2024-01-25-i2c-on-linux/hts221-setup.jpg b/images/posts/2024-01-25-i2c-on-linux/hts221-setup.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41cf985fb77d1bdab077182547b7045350079e33 GIT binary patch literal 374232 zcmbTedt6gz)<3%T-nl@4fD$Cwa8am4+agG8!%cQ{6l4_QwYhHVhdw%EhIe(pVI@&2A zm;F3@t@XXE_2lKXmmTDlG;8)OVi<-J@jrTbon{cnveF;?Bf}rLi(D>~$yG|F!o^+X z?(U{?bMsJ-_VQ4VQoFf%jqw`gt?}{kargAqj?rjGYkV})n=l++Ba^$z<*phJHxJGK z=YL+>X_Sk6mU1h{j3Rav!;NBIen){sj2u@hUGV?>!?3tUh0?`U<%TDm_9B+yI9A3< zSB+<{$L~otNe&;RWqfqVy{c^^po{I^Z)rUByw49k*jKquhwtus}n-? z6DJv_zWJ6hDtgB6X3k1ToSn2_;iAQFr~XG;=JNkqk!5)|J8#wM{55L}Y{i>4Z~5TE zKbLIVzGLTK{<`av%FjOExBo!R!9$1t_T{P5U!AEv`}O$?-!(KknlAq1(&e@vu3WwL zul8G=UEM$R^xp2fGw^6|X!!AypPxRH*2NI_+p_-8%Kjhg!X_}ROvcHS(z+OS4gPYY zWb$zliqWQd%B5EC@ly(2G}9~go~(Bbj-3C{XIbt)RbxU7w_Y8PmNv4o|91;3`v0}E z|Ff|FdtL41&M~-o+$f5tUkv(jxr%iG=l}kvXAD2?Z|jzKJrb2P#U9>LV1K}?)IVrL zt#>@Tcy*&TH~hvxAFt@TE-05e@Q5R5u)c54e)5a;%3Yt5$*X_oCaiTN(Y&2nU7o{V z&(7%(zPlgrnWzkkxt9Ajb*SYOHM_|_@v+D#xiW>(;BD;}&dLJf);Z0G)w2>iI&9Tv zU#y~gHKBeURprU+ob2J!YS*sNvXqyUCdj*2zxwsyO+oYI#Tdu*l$2u>`{-Zx(5T@C znaY%rlM|mr>D^str!J;;PwrTvDyBR+u2w^}Eio0B1YiHJ&D?({@n)OEQW|W=|5$4>$Hdza7FC zG)6Vc)P0xhNLHQKO!{$CQj+Lc&7C*ft2|ykRrI^J_5V@OtqZWQ|1|cV5ao@&S_2)q zeC8IfT)?a8et+wJ3fMu*Dw%7ox6-Iql=*x5CtH}rIAvfO&B-VmqMApdJl4sSnz_w1 z!Rj=#70oGnuSWN6+n>MYX#3|sWWAM9d|DK5w){k#_A|RYTQJ=e{CVm+MqJ590@L<` zka=vbkiOuATj}rtRz>L>PSFNdaL)?X&?z!AR|JifSFCfAvBS((1^z=|s+{aIGvhSR zwFg+-%EY~qJc*wc`iXl@&9WO2{U#HyQdp?(9`DwAMeusuBe?h0$!>TCek^ypBB)PM zW+gEfMOIJ`;R99(%u_S-vy1qJp%8qPSA?Mk*MeCF!- zB)3;4-!RbGuJM9&E3w)&EqVsa{p5P1g`!&1Xgc;R<-Fitl_gtmVcvWa_1r@7Z_w1n zfg*+8r#N_J#GY*SygJ#L=;-4c+N0{9i1d=8UB)KNXuZYXFZf&aC&60nwBeTgvZyX& zlb=?%LhubK|E{a;iRd~dH+uU6$J5Rt5+WXcp$`gzRCVKaG9ffz*DNj2^%A|)EO1A_*9~PCP6O_T1tDJKibX6T* ziT%%<<1YNv8e6s9@!m_?EH6<+^p%~Wu2Rp=fa024y!!pWp15s%z`GSG=X4DYiOk>f z3eSAyX`=;y2`-Nx>*A~PJVwFH`Ks!usG%e5oPo{#*Za(reDj;fqVisAa+E0Rnzl<+ zPHt}Xdr(QUVqE&$R{4ppu0h^KdAus_%RT07d-|9->(6GkW9y&H?6xVMhZ@L(S1&0> z-W!*DO~L*$O?NHK!u2VL|Gdll*=1iWXizLG9a3sYTp@VWqQExo}Bf8uf&@XOVDZbZES^;t{v!(+fX9sS4G2`H5@PFDXez z&X|u((>pkx!R45l?WVUz7pg-`+*nkQ91DeN$on48=*(;hVNs|6ddB8t&Ad6LOcd|9 zh_Ywak%Uz5pcRGbOGpfx5Yf!}YG}2_OEX48b$Xu*u})wAD}{fq9$Eb#+K6e8xm^-o z;Z;~c-EE}ZL1~p5Qjc6P6(IKec;(7d^a%>^Z3~kU&^B6m4D901ThA92qhOm8R~u*t zVX14RSJD9Qy2qx{MTzC8fTEer7v*stG_F(7m{}ygLeKm=?l!|T6D<>b>u7Qvg=UjE zaxt^LWD=e<*Gyg`psX>Z(tXu}M^{x@VekFywz_{Z#K?05k}T;FW0<<7C(0q4~)DC*s~@ zJ+sg3%UvnFq1@2s!pr3)1)|ImYi7sL@+!{-D61$!*ab7Us4%oTVIJ@H+(5ezQrt=2 zl~?*7WN;IhVNupH&GU^pQ*JGd(2B~fb=8OCH(`qciXW^&_#L;|R=3W$A_S~&xtq8BrXc_2 zTyBoZVdd4=2NibZ_Dh0J5ow>-SG|Lo@aR8_@~U^WOsmQ>vj^6;UPX!9Hp^3Hb9eG0 zQ+=T5XuOiDN(Zm*=a|h#ZNM%K{j|*U+b`aKQAe?YlH=myZj-j1x?(pDA7reJe8+a= z8voN)-Qb>=v`EHzTu|;6l@se7ykg_dR5f=dZ87!DXM0O+xExu4Fb08>`7J%hT4PE| zR~toFa%h!Epvm8F^9iU;N5`g=BNilqC5jhTjyz@<-MgVpTt?lcYV-3Q!e;% zNTTXIhhelL}6L5;MdZZNY_!YP57c=`vv0l&E*URaZ527@*d=#$+ci3QXs&%W6 zoS>ltWb1G;Eo()&ZcY4VnjC8;AQ9OSX|p1WEEKW_%blD?%7AY-Q<$Fa@ycwiDq-qw z`@Gio7St-Dj!=`*KwG9RbA4rN8Z9<=^*pyQi}=3A?Dv?TFQ0I$j=oF{B*VQ4_)PHP zS}e@>cP#{L2D0kbC;=*OfJB^GXC?)5WPH&|eZOhCd2T~bQBje+^_FQV;{BPKSE)|a zimz+rMZyVlM2?=>m_~d70D2UERBwb6WUl9Pmathpx;v?0JvPj;gK;#U>RLYmm zWHJK3fZM!5W zw9TAJ&}+?!_fJtkm6^VAvH>$`GAaaFC}=ycoGH@sC!)N8CLk?=l%EM)Gx_!6KMr?< zW|#Z+EoRE{E=f$rOtbWioMg|;ge=^)R#dL)cCy|LWXzQlXb0+8#xlVjC62jmp$ELn zVu1yL6mc6^Ir-;WXuRO{(8{}{_=#j~AT7!!a9u@41FdPM2`G+P28{yrB{{;BVMN(& z($HpZ`KSs2n$taxcbP3xt{#=B=)2f_u`sgH^15e|%jlxU#H3Q;KfjX8Zp^DPn|Fok zItBkmY|LAcjLxyxr+0K?#YRWjC*k63Pk5}7o{GLq^MVVXm zCvQ|VP~t2z(+YAjdd>2V2~(K+7A7~*PJ8Ao69N*_*Z=dyMj%UEM60%Aos%mnEEUwY zt`hpIMY+;iad|3DDy`CG7H`d_d0T=*U(zuXSJ>awVy$pmc`~~+sw0aM{GORp?-th2 zKij1cbkPHjGX}CgIoT4iEs7Nan0Y^gVVz5ia&&+S4pvmUXmUN{_Y;+e-`IZhsIs`M zfIBO4QCyXE=pf^`YQ(PFN@zhN$m1;Qb?^(%hX%U!tUYq<)rC#JMVPywP_wS8Ts1%7ef>9j6WKFWzrwXaZ}xe!q*WGrJX6SE-ATZ(y9~1+}&8 z6xB#iY%z+8!=+X3-rz{eQT+(c$yQ#OZf1u%oNTWZQee`1g3@r8q7Jab&E!9mxZ@Tk z2iz63bO+Vei`*A=q%1YFC@oI#-Z>zd;ulL$WBmQDmm;6;W|q*BeP(hQ5(^7Nd9TK2 zsotmI9)Djpz^Bj8)%)13m9jVFA9UffLCGX;8l#~Psu1{b(PkFVwg(d9g@n2I{VGxZ zfLE+FP}MNP7wTa70PluR1=Evgvg>m&QJ+o935DsA4@|s^|81X!ShKIXQ>ZmZSbQ!R z++&=tZRR-sxZ9ONL1fn7W^8#p^%UV>e0rMCvnpKb3HsOA_FNATU-3Cb<9N0loC4LFnqTz-ux6J@d3+OqQk8;w_c5G{8y zH=MM7E^)wga3hck0vnQc&l^CVbqSKh^@)Xv0Utj_A8bZRtEi;(6@pi(lO1fp{vx~0 z=1-(TxI%qxhGCuaXmGz1SAuvT$L!=U)d!c}sydxZK+JtIf=J zZ8OnuM+q`5bT9PBq?3+*pz){~A;re)Wfzoj%{2Ra_rUbbI1BT3c~WojkCl|WXGWpK zTw?>G9=w?Q8i~*U9W~57{ihVvy21XW^CxP1w_h!JeN13gIZwk~2S2;uUtJsc=GxEf zlM0<()TOJ0Zq@g>yll_Kto>?8C%ueG_qeV5_| zAC%R$b+C_D`NnRn-bpd zSBvu7_*|G0?nol;3j?is47?C!_wWq zF;kwJ#@1JH{DnHiT-{un0QrfCh5Ta@0zU5t>E<4a+ z0GzYGwv$py92NyBjZCd+F3`ga(&b45;u>XhB%bjEiZCr^T9aHouLvv_t?engaE!v% zIeEO0!TurQPm!=pU`A;07)e_Kj|cJcumVZcf*>KtS?tUb(u~$NkmOrfOOT!U?f93T zsR7$K2joTJAd#@XC@8H4nrM_(Paw6p+jxWC5h}lfYAW#>wi^%l%gL|vDCJ>S=GQ9L zPZZ8-jx$>ucQO4XXu5P4x}rgsAnMdBl|QO z56<-0Gw_-?tp)`_ViTSd1b3+jdIebYc!ewu>(bM0Jrj*uB(Z|y7EmykRO$U7Syx&n zov&!*<3DC=+hyc=%)rgHFtdeG|54VpuBY(J=Bm4)K@|V&hn7{PU(XIH{4RO^vMDtu z;tsz4m$*B@H`hezcE$}Pb*mINFT~ZQXzT^Dfill1aB^jE)S@`1MbGrxDNC2J3Y$~! z=G0lA!GAhc`eL6`_UWIyAG*e3G0fnacH;w}x2$OW&;9&p_s!gK8+MYBWrghFq2Y|} zw!um=uX$5F1-HCIcR#p1(##3kSJwJR#o~TfoC($yd5~V06TV>w-H*KSlD;f)@ky-j z&Yc+}?9Pp9Ul-uAkGmQ_Cx2*aMobW;BndvV=OJwif~sMUaec!m#1;KNo4LYzqw?Vq zCMSo#1@s8YyQg< z#xTpI&S5c(Z03jr1Hpy@iZOgM1zr-|2YI}~=lcm63g9S_^f{sp;fhEDkf4&VMG(+i zrdUmU1WL^WLH#d8FqJyV;&Wc8UA_!x8s5y}Uyabgb&S>G_MzUbL;--+iqr3jM?OeX zz&tQBCbo+eys^(9uYjVz>zSGO=p7@)06O{9Z>ia6p==O!N!id7v0Mkw3pP|5xj^cJ zg~}SCS2|FiL>aD3K#EF67N`N7zy{JcQ<#-!K~@K0loFKRAyF0tR3kqFJ_j;F?UAY~ zI8^H*_oZn&1asVB`+}`Wg4eU2qp~OYEivB1?zY@i_A z@6u;ZmVwsM(55GNeC&YO=-8+xUxBe8A2QB2QUHO6E?RCJu)_?nT+cxg8(aiU@xkUN5!bQ?#Zh8Ov zN?JQ^(Yk>fs}9w=eY|JYs=gQNexM^2r*gzqqEej@w{DPEiN#d|R|K8wjp%`=)mwys zsMrlt-(-C9yREGU`(_Foc)zCBgSxT&MCLzfU?|qie}3o9U-K%D(C0y2+lMr%^5mGo zzU$A2575FMAwZoH`^!Swd$NCfTM1eHdBpgWuZ3yf?k1UVHfZZHiocz0k6CYnmrnV! z0C7sK$oc==Xa)79hwD}p$CMP@x8;k@oH)mLxa_e1dBCt<`+#>XYa`DC5q+ld_w3!v zisVn=R2^oFp@F+;GIt=s>14Yrcm+~8%ja#1^GH-LK+*TNy)Zc4(kKh8`fL|a4W1Xk zlGD(w1`3@~y@U3Z5F-Uv@o9J<5I?+&#~3CTH6(W7HBR@>40mg?U02n!TbPH~?7Ra&uOv{-Fxcp|7cyi-dDO}`Q z2|KVT%DWd+; ziVjO=8Lc*`>kIi*y_Z_jd@RHXGU+ig{^(?Y`d3B2Ywa>E_B|vnEyJr8m{=C+0k#WH zkS{@cn3RGlGBt?=o(py>dwcbyZ1y38IT$`EclT317KlE%Qwy!!O)E*)~pT$h1{WH5>+c$^v zpO{KLyX1K934r!p7m=tX@S!LL24E0)GJJ}){bYqn!-yal7WVjBBybFxN!tp z03Xgkfpg3(3h@wqP$y5F(bO#a5I3K?Zf+9h1Rk@<7MzK$dW$YmF_lx_Hm_?;CG)XCdr|8)s=o zmHmh`jV_ALyQo`80~d|TFY+qa(7%Os-j}(l{N&^+Cj>AmmCo3863|# zBBi%ssy`Fl_awQfC{1+&-jX$C9)F+P&-r2rYJdyCsT-`@(S_hr0Yd&La(z702T_I& zl9L*d3?t1G1`a2ABh38qo^58f>!B!CQ}XkLA3*@>gO==2-+FRT9|dTbiqPh|_$>RRvd@WEo%ua(Zp7#Ft?nNlJ6~ZD3>M10L#AS`iB1 zh2PLOAd+X`ipcA3Gm-5hc?C>0(7vwIQaL!nFv!?_0}C>|&%`dG16aA9ngDQ4vX<$Y z$Z~iK=$Oe#2Cl)thr2_O_`DzxCFCsV;I39ApoYduw)GtNReB}{as0iRfzASnksubF z1?xn$hu{2ePmushzg`dBj>|#KgA_;Uh`4STW5@w{Iiqpc`+V0lp-5uhp6{gn&0dDE z$XHgG`tI|-YZacsWfO%@q+K1H>6k?Jp$89^6kLg_4_sU3snr^XpmEnu`(}HK61`O%*&^s@TGcOO$vkc8 znZZM~>iM$+>VCZ=ta;_rF90+@QFZUMQ%C1Iyjz&~!q3iYygtXicGaMtda$<;m*_YY zcPL%Xg&gPKNp9SwGTQyOL@yJS%fAR2z5bk&Y1RG;eUUhA&u)72o#Ex&sp=?bIAiYT zq4|7EqJ{=a7YX7+J(CchMDKjVYiO^@@4jWi`GYFk3gJX88l-#q-b2qV%=*X%8uy?W z&3J3GVvQzXZJ%kz4r}$zQ(nkh2by8`*JYKU!wVg89~C3@1;zy8$p#O9PQ7 z$UAqW7HS5H)D---Z@UC9nkPX{rWU*(_FUGkw=xa%Q*R|jz{C30LJotfzSKO%-JEzz ziha00YpxW1hg^dL45Y09G67WfBM>KhY( zan!^vVC>7)9aVqvUn?r^yDQdjOd@Ody?KJ;Z%)}qjqA2{ju&*Z3Z5p+=&yk8^(7~_ zOVOD3)X7$yTGc8B7yb-G`aV}R)ZfQ@Dy{xsUO#OjJ2S%I0Ja9fi@aa=OJ`BkW_!oF)nb?)YCk8?1dY7=YXC_H znypf!*1ytq>CGa}pzbu3)VkaA3M*x^ubD^ei(WLjS@d$ykFg`thYko7Wj}I4l~?(x zP$y568`$d44?U}N%5O&_ZU%T&0!q>6$4I#y+Zv9JhK)R@L(^4aDn$;jD+i3zdwT=P z=ThWHi>8AX~k7einDn`McXKOi)5P;YI$M{{H`8> zLyuU3@Ou?Mo0%JV{Bc?LIvbj@eEPdlVpv$*T+Vktq6RoxNd({Q1yB%B3KJ6dFGfT{Z3bFD%@I8CKK3q;bW>i49% zy00iY>LaeW7q=H3 zsdj_iSb`k_7fQH=542EhrQ2x1`vK?^W!^7S`?d~5!DTzdyIFh{i9Z??N}x*) zk%f@nIl-|T3|_`8tEeoqZGCZ?0{^NTZhlR;tF9`o8aluhpNq|1XXdu*^8F{#9~uR< zSXMhVV{%?KI&-1a+m9Chq|p~^-Sb7I+z;({>aPBA9=N+gd8z0(f?g-qH&BuL=^tCA2xfXUvL%U%6L3tZBU~cI3M1qcj|E&c_2znOy zoteE4qocP1&;!4~%!UV`$AHe65st|dJ5UkUE=&iuqemd&@40I+N`k`pVFQJSx5PXK zySNKPiW0f&keTbH3V=|@TSG$@Nhn+WGhhg)c*@l{a|2C6AW zHI@7|cWJVWX5l(cCZx$T;w;*Akbp;#U#Vs*{~g+2M@-BEdl2uW1!uQ>%_^Wjk6R?8>|9yDb zoR7t)xYYUD zN2U3qh-d^BL2S+?|C1mFBUcJYZ;%`&nKb3FeS|oUD9r>cJXg<{5UZdONKFZ9sBKhE z%Q~m8`V;ZUM|^rD4_%{%jOLGP+|%Sa;!?@M4S+oDIN3c*~@Y%RKB}3lhE5nV3JmNC5oE%!wIh772{sNR2Tx`AH=izmr3d?wo}g z0ycs~L+2NkP(+IbIeu3%zd>1Y`gqr`1@FCwPskJ1Ezk`hQUg5h)TiT9!_ltm?zq_GXS$`*PGh@A=eDKFkdEG5a-)j1?nydQIKlYTHtNbQimh;TT9|)Woy!Ex!G37VRd!gAH5*W6;RR6f zPufqJ~XrO z_jxxD$_|}SUvK)%?sqp^n1kZ5HW+&muuJruGCyCa?K+*ao4fdr?L~?A`ufl+{p*(g zs({_LO3DupS5>DZkz$SeThkC+9V_EzcSz09V%;=F0v8Mex?)jANa-J+TL0qzVZ&>} zaOld&i(T#IYR>=Ma;P)5iwmmmz52ZKsIu_t<>Pwtd$sVVuPXtnnT3rA-shu}?{5DQ zCPi43JqS}rhkBzfK6qdvPk#0^blHvWSwY;z^B{(??t2;q-P$d zb3q#aWlVs{gAmSek}*wrOX6+dN@t(zrOson@wa@E>?iCM__RXL%q2aZvHKung42Nv z;;=A?(e!RJ72pvD)f(0eW|4g|;PZ@8?-;GeAT-6NG)n4JQkw;UOvp-9GW0cd?ve{M z(v6W)6+_i4@PB$KG-2x?n|br1qN3>noGCYm>de!m$FM@9ep3C-qM2wt^2hz7A#mlX z$wN4owbbSe2dHEro4FcvKB6mKHN(=g?CT?W2ogCU8ul_43pSVxe;F+#)RGZqs-gS| zg744JCKCh>X0|K1DEuUJ!oiLZ*QcPTl$T401K^;Uw-!?NwH6x+4{@NbL)3w))C97i zC%Au4CG7T;X0Fx9|FjeCZ8v07c|S+?r@{^aAK<^3*)wB7jw*~DI?O~?%jep28eoZJ zf4W1lTZo)f&I(-VLJjpC?$91!F733>J@Co6;r%(@eh1h`;7u5ZIVRa(($j$2YeiH* zaA*^zB;X=54Oe!F+Pf0uu%5iE=gf??d!vma6_{>W>j4^|qvXXq} zyVXkBx{YbCv-yptXC?XU412IRbcpU0pSVl?{mJ$)zOTh|!@G2UePqj|rofLK5LvFj z-Wa;A{B}RZzmhzg`%y!O-|WcQ*tk=ewLAE|h$t@hGL*%+p2Rg~+kNt`F?iui0(bnSrluE`?F)tAd(v+3UYgWhI@HlwB_Tzn^rs^%0er6)i;$Exg+3oKCjoLk}5+Rh{=p4z1w*OZm3*| zL87=po;{(Ie3J(9lO98ELz%(yf_zFz-a!FKT(B%AqPpPuObUy!nb~fXqTNq1`k98L zgA1*!;N420$RUNpW)dN#J@bIia9DwWoVI~I;a#Z!XbO&7=)zXIdK>7}7=Tk)1PJWN zNegNC9$pUKs*VEM{x8J|B#`F1kaMW?L_klxeTz3XsLxVX?fAPi0W+u)ZN_i(wXGkOqcQG>+T_b;I3Bqt!I72eoGb z)LT|Hil8XFD0O*~>keZ63WLcDfx>d)_NTg5XVdiDNypi&xNQCp(9AGhT%OeAct>^a z7FLg8aDpvE&tblF;f=lTUX!=W!^bKntz;j6)*ez`J9vO33!+)8+l{v++-4=Q-qlKj^rnuEqBTbP7* z(rDW0j8M$VGJTj5EHjFpk@n!dI1R84joj1cSE*HEcj*^L)Gt8O#ucut{$`n=JFB`; zo#Ky2I+D8LqA?AlRM*5JpV4BAn(^MeM(f4U?TcCU+sf_Gldm-?3rp9b7wbC-LyM&l zJ?aa(>gw-)5MF$+*DlKDRqq?Tk^ekH7QSYuR6l;lj}ntimu@s zmW7+{>w_Xot)&?5+L8Hf9OOu-ZcjELeLTNB!Y1BG(GBvW64YTIz1M#D+ljjM*(>E0 zOqjM2D-U}#If`aI#c;DYNhhdAn|d` z1SJ4JO2+FF&m@|GcLC1mgZ|K_?lh0fMQEYjW+Um$<`fVtuylxA%}B!*jTi0_vKNDy zawIyYonYetFDwihye7|q31pV~Fz~%Wf4Q6Bh`(7>lh9w4)G@{?bxO@>L^rmBKtG}2 zGE1d%0@s|_R_5Q*yM7Guwxo?#$D)N6h!cN}YeiaRpgjwCHRNvpZ@puTVdx3zS@-6DW_9OIrS~3?LIryH%IOxXNDn&r_7AA=;sW=<1ha0(plJ0gh^6W zKFL;mM5llEAqptey`*wx@Jx`I*?nG63urA>&xJSu%zB}Dl?57|iOJ`4(#MN3twM0` z6ucf;Bs;4L=iOix&Oslr>>H_ofuo@SejbjYIHmclC-2b4$#FRy2%)Gh= z6Ts4_6?6%Oqs0rag4>!#i-vxMcLYlsg`vT~4mVi1lPHs0rPznl0cain>m4Z%h7ijI zNUuR&fmicA0;=?g1%ws(tI;U{9jk3cO-)DI>qo5VMx!)TFU@{QK#b2Yvy_LEz-zKq zp4s?`^b>BCn$5W$GDQ@osCni4BQ@I(T)N!i-_Qja37bwTDUZO_VtRqSR8$G5 zpPo59TM5RG@>4XE*rJtOrOF+X0ug{c*Jjz4C^UnCln*0*qxTr9l1TRJ>BuG|-A(*} zV+zoL2=@t~{^(`rNwZnhXJUZNtd&<;BvPj%5?`0dcS9$@U9py%22 zhq~JY_i?mjwizDc-cRDwOHO!Cm3-v{447U#!bEOM>@#!rhE%r&xtku8@LI*;jyHVi zK%&0cWO7IZ1oa80%OkK9Lg#;zZBcr~m|bf7{@h~ifyClsDH$E`{th%OOQyorm{2OQi@5jIq?}7RZ$DY}0pdSz7MW|!b?vV`puVP{S zVNTOP>NdL4Rayo)y!P&lI-8&QU<4l&6IK{!ry?r(WN z9xr%_(-q9x{|XJ7*mr%}>9?7#sBt^XA~D%?fc?uj!Cv2`eX;N;cRpjQsjafy$Ccau zH1HB6s!|)(-=^MioV|OoJ+ErR^qqFI+vs(VYjXTsOut5yd?x2g@4X(ExZiri_S4$> zkZR+Bao_o9wY>l(>eY=E)Vq__dG$vaxLa@wBFZB7m@#EUndRz)IRiK{f8Ql&5XXGx z2~d)%DayDM8*PYa-76BM%)0~lE7eKo50P3lyA?5Au8uCBcFM=fKi9u*wmrgx!h8#p zKY%ox*NXL79sZVA3q!*1#^6w0?fAkQ`D^?5%{U!^aHkL_x5bK?g91?wIht!>qFT>n z(*`3Z!bSN-hsLSCmxgjm4}svkU1FMOns%T@6bTwoR1jAfl8D-bIU7zPnTpRq=KXq* zN!csPp8+>9nJ48Km?H&B1lepgz2)xo^}Sr0SE;lzebp()*xF|*ZyYng+=zceeY0F; z%hfZreI{;8icOglr!=TddUK2MUUEn5pH7vyk6jaDj!3rqyb8-X9@82PbM14M zl`A4DNrR7-cBXi7jK`g9S(tp0ee5om1VgH<5i)s_;JQD@{g=xjN&}s3kbC%BLbPy@ z2#B>FiEW_vlhPppko}?z6(}$p zQ_z?$mBE0H&bw52t!TyMAd@!p-+yk9j~;)IkCVp;_a_N+Jd@rIn$yv_`vWURFqvH_ zeg>wepyl4@+Z%FrGs3KYUx-;7JV6LqTAi@q>eXYUpLZ(DFRm5oT&}HpF0OiPpdR_o zgyet0R|{NKloDG)e>i-$an?qhxG12&PY*&!gfzWA%X4Ld;VwHITlUQ$oUC&NsEkAV za2DZW(Dr+npY&bff?2?~%N6(61)7q()o~R3#k}gFyNiTB(x{4-wf^sJiw#rUV8BHt z2J7aZP>^gx+`Gazh4rF*rRy*r{v!0-If&S6U8P%VFxo%okQ}eo7UP^FYP%<{Q|hw^6sEd779|7Vyr6QC6z-Ujyh1M+OVCf~tSB^1$F;ja$!I0khhsr#crOTzm(&;5C^$_z)Ou^=)axu$_kyP4aJ2G06%4q}P zu`ngCbN}&h5>Gb@pl!E{H5p#3KeNYZ51746J{7Xqa&;QbTa=?Je+A=bFpR)(eMKp$ zFcmy52M`hn$QeDpZMy2Qlh`C%QMaR z�PZzf)=ibQ#dicCE%>llRx)E|Hf6HV?zCC{%EwlGmcJTbLR&0rGg)(n4uJXW$$! z>RkGWr_G2iH-j8O_uik!%d+R?q@KLkU20CP2`)RGF|p6|=GeTXt`npB<}3@qImJ*^ zGhy8dA@;wsEcb?e&aYC0uRn=%ej8jahWdY-M7D|eYJypBK91k>6k}4e>O*VLoDNDZ zum{w9aqB7Qh{HIk05iP#IgwR^m;0}6tZt)w-(_r@Wm}Xg|E2ccy`&Cfx%zI|H>20h zXBxId#b!le$amkp_kKYK!WfcKymcjHbVJIOqlG{FPfTAUZ<%cjEm`J&QQLhInd)BU zx%4W=26Wq-FzsJ)<4l{G77q72l;Fap_q2C$ENJTjhix%4V*!Kll8IVf_nxJd6rHJz z-%NVQqn|>&pPDD=b(uAT2EURzv_Ou0RKL`;ta{<7CUK5p!w$bPjk-h5>QbOO@=OQs z=9$JdDIdY>!Thz-ie3hXzqKGjVVGP+V1myp+KC*w0MA;?Sx-D5cm}DQ@7ZL z964gLNen?#rq=_WLDO;Qf|#B|qx~leAA=n89wF*e^ywO1rQm<2DBF&sNu9!&13$S6 zbA!f!z&V*y()AQdX1ff-ct(EzT04j3%F!TG;?je1XqdrL2t z-O+RZz36Z1$Za_k-#Zmv)W564^Pgp)*Fqa+Jo+YZh7%24)%2?3pf5tK&#cLbY`Vku99^s#)s(p{CjX$%2Zx^Y zUO76wH0u!827~6kjqhZ?&3xC<6|?og`aYrL!u!mh(PaBXt@imSFq3yXyZy7#)+#gW zx19O#&tE=|EqR;$+u!%TW_&bXuA7+ep3)J$fNcx3JQ8*^rdxN0;=80mWrN$ItK0{8 z^#TVF_o%Jx`7*(mv7rN{VTvz0%n{A9Yxy^-oMYtig~Q_BWEYG=`L%5HHkGdy^- zudtY5jr#m{n9@-wnvoS3xqkF71K_cwcY*1y?kkZDV4z;>c){mwV8<^TG)^W8XZ{#& z|8!<{@9{}@*^XX=9jH;(Mu;*9Iz7$|_rej)13ZHw1M$cT#|EuWhF9N~4wSP(-;mZ3 zY#@Avk!$r3dG2zuCmxIRmWC#?f=pNw@dQ+C=M>9?zJ`~;_Hu6RZ#%`Np?C&j$