HyperPixel round i2c "break out" not working

Hi there,

I’m trying to connect a Pn532 RFID reader via the i2c “break out” connector of the HyperPixel 2" round. But no luck so far. There is simply no i2c-3

sudo i2cdetect -y 3
Error: Could not open file `/dev/i2c-3' or `/dev/i2c/3': No such file or directory

There is “funny” thing though, I can symlink i2c-7 instead of i2c-3, but it looks like it’s used by both the HyperPixel and the device on the breakout:

$ sudo i2cdetect -y 7
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- 15 -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- 24 -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

Now I can talk to the Pn532, but the display is creating “funny” colours (see attached photo)… So apparently they shouldn’t sit on the same i2c device.

Am I missing something?? Do I need to connect the ‘Int’ pin or something? I connected GND, 3V3, SCL, SDA, and as I said, that works technically, but the screen gets confused.


Edit: Also I notice the symlink is gone when I reboot; is this normal? Does it have to be recreated after every boot? Is there an additional step missing that “activates” i2c-3 somehow? All I did to make the hyperpixel work is run the install.sh script. Perhaps the additional i2c must be activated?


Edit: for the record, here is my /boot/config.txt:

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=1

# uncomment to force a console size. By default it will be display's size minus
# overscan.
framebuffer_width=480 # 1280
framebuffer_height=480 # 720

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=off

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2

[all]
#dtoverlay=vc4-fkms-v3d


dtoverlay=hyperpixel2r
enable_dpi_lcd=1
dpi_group=2
dpi_mode=87
dpi_output_format=0x7f216
dpi_timings=480 0 10 16 55 480 0 15 60 15 0 0 0 60 0 19200000 6

# TEST
#dtparam=i2c3=on
#dtoverlay=i2c-gpio,i2c_gpio_sda=10,i2c_gpio_scl=11

You can see I tried the TEST bit, following some hunches here but that only freezes the Pi at boot time, so doesn’t work.

Nobody? Has nobody ever managed to use the feature of the second i2c bus?

I don’t remember having to do anything special apart from the install. I have a Pololu imu connected.

$ i2cdetect -l
i2c-11	i2c       	i2c@0                           	I2C adapter
$ i2cdetect -y 11
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- 15 -- -- -- 19 -- -- -- -- 1e -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- 5d -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- 6b -- -- -- -- 
70: -- -- -- -- -- -- -- --     
$ sudo ls -la /dev/i2c*
crw-rw---- 1 root i2c 89, 11 Dec  9 05:17 /dev/i2c-11     

Which is your configuration? It seems weird that your devices show up in i2c-11 and mine in i2c-7. Also, wouldn’t you need to alias them individually to avoid that the special hyperpixel device gets corrupted (as happens in my case with the off-colours)? My platform is Pi 4B using Raspbian Buster (as I think was recommended for the HyperPixel round). Are you using the HyperPixel 4 or the HyperPixel 2r?

Hyperpixel 2.1 round with a Raspberry Pi Zero 2 with Buster. Pretty much everything is up-to-date.

I had to run pip3 install pygame --upgrade to get the examples to work correctly.

1 Like

Huh, weird, that’s very similar. I’ll try a different second device then, I also wanted to hook up an ADC via i2c. I didn’t install anything python as I am not using the touch feature.

Hmmm, no, same problem as before. Trying a PCF8591 ADC now:

$ i2cdetect -l
i2c-7	i2c       	i2c@0                           	I2C adapter
$ i2cdetect -y 7
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- 15 -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
$ sudo ln -s /dev/i2c-7 /dev/i2c-1
$ sudo ./pcf8591 

Again, the ADC works now, but the display just outputs garbage.

Seems that the Hyperpixel 2r really cannot faithfully support any additional i2c device. Very disappointing. I’m trying to pump through a Pi Pico now back to the main Pi’s USB :-/