Orange Pi i96 Getting Started Guide

Orange Pi i96
Orange Pi i96

Recently I reviewed the Orange Pi Zero 2 and thought it was a fantastic board. I really like the amount of polish that the Orange Pi line of products have as it is the closest I have seen to anything approaching a Raspberry Pi experience. We also benchmarked the Orange Pi Zero 2 and determined it’s a very capable board.

I recently got a Orange Pi i96 (thanks munecito!) and this board is very exciting because it was purchased on sale for ~$10! That is insanely cheap. The reason it’s so cheap is because it’s a headless board that doesn’t contain any display-out ports.

If you are going to be using the board headless anyway (I use most of my SBCs headlessly) you may be able to save a fortune with this board. Let’s get started!

Hardware Used

Orange Pi i96
Orange Pi i96

The Orange Pi i96 is a low-cost board from the Orange Pi line of SBCs. It uses the RDA8810 SoC and has 256MB LPDDR2 SDRAM. It’s well suited for headless tasks and is astonishingly cheap.

Links: Amazon.com*, AliExpress.com*, Amazon.ca*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.sg*

Geekworm Copper Heatsink Set
Geekworm Copper Heatsink Set

The Geekworm copper heatsink set is designed to fit many different single board computers. It uses thermal conductive adhesive which many “cheap” heatsink kits for SBCs don’t have. Eliminates hotspots and reduces throttling. Can be further enhanced by powered cooling over the heatsinks.

Links: Amazon.com*, Amazon.ca*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*

Orange Pi Wireless Mouse
Orange Pi Wireless Mouse

The Orange Pi official mouse uses 2.4GHz wireless to give you a wireless mouse experience with the Orange Pi

Links: Amazon.com*, AliExpress*

Orange Pi Portable Monitor
Orange Pi Portable Monitor

The Orange Pi monitor is meant to be a portable monitor you can take anywhere. It has a resolution of 1080P and features a hinge in the back that folds out to support the monitor.

Links: Amazon.com*, AliExpress*

Getting Started

EDIT: I now recommend using my fixed Orange Pi i96 image as it will fix your USB port to be able to operate at full speed and give you a much newer OS of Debian Bullseye.

Alternatively you may use the official images (not recommended for this board). If you’d like to use the official images instead head to the official Orange Pi downloads page:

Orange Pi - Official Downloads Page
Orange Pi – Official Downloads Page

Now select the Orange Pi i96 from the list. I will be using Ubuntu Linux for this guide but you may use Armbian as well.

If you are wanting to try Android I highly recommend seeing my Orange Pi Android Installation Guide as the installation process is different than Linux.

Writing the Image

The images are typically distributed as a .tar.gz file. The name of the Ubuntu image tar.gz file at time of writing was OrangePi_i96_ubuntu_xenial_server_linux3.10.62_v0.0.4.tar.gz.

We will need to extract this file. If you are using Windows then grab 7-zip to be able to extract a .tar.gz file.

Inside this file will be a .img file. Since I downloaded the Ubuntu image the name of my file was OrangePi_i96_ubuntu_xenial_server_linux3.10.62_v0.0.4.img. This is the image that we are going to write to our SD card.

There are several choices to write the image to your SD card. If you are on Windows I recommend Win32DiskImager. Etcher is also available for Windows/Linux/Mac OS X.

Write the image to the SD card using your preferred software.

First Startup

Before starting up you should make sure that the Orange Pi’s switches are in these positions (indicating to boot from SD card):

Orange Pi - SD Startup Position
Orange Pi – SD Startup Position
Orange Pi - SD Startup Position
Orange Pi – SD Startup Position

We’re ready to put the SD card into the Orange Pi i96. But how are we going to connect to the device? There’s no network port and the device isn’t configured to connect to our WiFi yet.

Connection Option #1

If you happen to have a USB to Ethernet adapter that is the easiest way to connect to the device for initial configuration:

USB to Ethernet Adapter
USB to Ethernet Adapter

Connection Option #2

If you have a TTL to USB serial debug adapter* you can use that as well. See the OrangePi instructions for that method.

Initial Configuration

orangepi-config Utility

Once you’ve connected it’s time to do some basic configuration. We will use the tool orangepi-config:

sudo orangepi-config

You may now set the WiFi settings, etc. The orangepi-config is just like raspi-config if you’ve ever used that on a Raspberry Pi.

Don’t reboot before doing the next section.

Fix Second Startup (Debian / Ubuntu)

You will notice if you reboot the device it will often not come up the second startup. This is especially likely if you performed a sudo apt dist-upgrade.

To prevent this I recommend removing the alsautils package. This will impact sound functionality on the board but as I was not using it and intended to use this more as a headless board this was fine for me.

sudo apt purge alsa-utils

If you need to have the sound working on the board there is an alternate solution available here.

This is not necessary in my Legendary image as it has kernel fixes for these issues (highly recommended)

Set Timezone

Replace my timezone with yours in the following commands:

rm /etc/localtime
ln -s /usr/share/zoneinfo/America/Denver /etc/localtime

Setup Locales

Setting the locales isn’t in orangepi-config (such as it is in raspi-config) but here’s a quick way to set them:

sudo apt install locales -y
sudo dpkg-reconfigure locales

Setup Wireless CRDA Regulatory Domain

For the wireless to function very well at all you need to set the wireless regulatory domain.

If you are not using my image then you will first need to install the crda package with:

sudo apt install crda -y

Now we can set the regulatory domain by editing the following file:

sudo nano /etc/default/crda

At the bottom of the file there is this line:

REGDOMAIN=

Put the 2 letter country code for your country. Mine is “US”. Once finished press Ctrl+X then Y to save the file.

Optional – Upgrade Debian OS to Buster/Bullseye

Note that this will not upgrade the kernel. You can upgrade everything else though including all the way up to Bullseye. You should do this one release at a time and start with “Stretch” and then do “Bullseye” afterward.

If you are using the Debian installation you can upgrade to Buster by editing your /etc/apt/sources.list file.

Change all instances of “stretch” in the file to “buster” and then do the following:

sudo apt update && sudo apt dist-upgrade -y

Once this has completed reboot the system (make sure you’ve done my fix second reboot section first by purging alsa-utils). Verify you are on Buster with

cat /etc/os-release

for example:

root@orangepii96:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Now you can upgrade to Bullseye. It’s almost the same as upgrading from Stretch to Buster but there has been a change in the security updates server format. Here is a working “Bullseye” apt sources file for the Debian Orange Pi i96 image:

root@orangepii96:/# cat /etc/apt/sources.list
deb http://ftp.debian.org/debian bullseye main contrib non-free
#deb-src http://ftp2.cn.debian.org/debian bullseye main contrib non-free
deb http://ftp.debian.org/debian bullseye-updates main contrib non-free
#deb-src http://ftp2.cn.debian.org/debian bullseye-updates main contrib non-free

deb http://security.debian.org/ bullseye-security main contrib non-free
#deb-src http://security.debian.org/ bullseye-security main contrib non-free

Once you’ve changed the files do a sudo apt update and make sure you don’t see any errors. If everything looks okay start the Bullseye upgrade with:

sudo apt full-upgrade -y

After a reboot you should be on Bullseye! We can verify this with cat /etc/os-release:

orangepi@orangepii96:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
orangepi@orangepii96:~$ uname -a 
Linux orangepii96 3.10.62-rel5.0.2+ #4 PREEMPT Wed Mar 18 18:49:25 CST 2020 armv7l GNU/Linux

Notice that the kernel has not changed at all (as cautioned at the beginning of the section) but everything else on the system will be Bullseye!

Performance Benchmarking

I benchmarked the board using a SanDisk Extreme SD card on my Pi Benchmarks web site. This gives us comparable results between boards and there are over 30,000 benchmarks submitted for various boards / storage devices.

I had a total score of 497. This was below average or off from an average Raspberry Pi setup by about 47%.

To be clear the storage performance on the board is relatively low compared to the Orange Pi Zero 2 or a Raspberry Pi (Zero or 4). That is to be expected for a price of around ~$7-$10.

I’m not sure I would say this is a disappointing result though. We are talking about a board that is a single digit number of dollars. For the price point that is fantastic performance! In fact for the price point it’s a wonder that it works at all.

Conclusion

It’s a great board. At a price point of $7-$10 it reminds me of the really, really old Raspberry Pi Zero days where you could actually get a Raspberry Pi for around that price point.

The Zero 2 is a significantly more powerful board. It benchmarked much higher than the i96 but it also costs significantly more. If you need more power that board will be a better choice. If you’ve never had an Orange Pi before I would recommend the Zero 2 first as this board is quite a bit trickier and has more outdated software available for it.

The version of Ubuntu on this board is also quite old (Ubuntu 16.04 / Xenial) compared to the Orange Pi Zero 2 which is actually running a modern 5.X kernel whereas this one is a 3.X kernel. Make sure that is not going to be a problem or you will want to step up to a higher Orange Pi. The i96 is definitely meant for simple services / projects that don’t need a lot of power. It’s perfect for those.

If you need a headless board then the Orange Pi i96 may very well fit the bill for you, the price is certainly right! Don’t skip the heatsinks though. It got very warm during testing (warm enough to freeze once during consecutive benchmarks) and Orange Pis are known to get quite hot!

Other Resources

I highly recommend using the Legendary i96 Debian Bullseye image available here

I’ve also reviewed the Orange Pi portable monitor here

Don’t miss my Orange Pi Zero 2 Review / Tips / Guide for another great board (with display connections)

I’ve also reviewed the Orange Pi 3 LTS which is roughly equivalent in power to a 2GB Pi 4

If you’re trying to set up Android definitely see my Orange Pi Android Installation Guide

For the fastest storage options check out my Linux storage benchmarking script

Subscribe
Notify of
guest

370 Comments
Inline Feedbacks
View all comments
arforge
arforge
1 year ago

Could you point me where to start to add the support of ov2640 camera.? module’s pinout seems to be reversed but it is not a problem.

Fatih
Fatih
1 year ago

Hello james, I have been trying to run docker on this card for a long time, but I am getting a thinpool error, I think there is a missing kernel in the image, one of the modules is missing. when querying i use this code: sudo modprobe dm_thin_pool

Fatih
Fatih
1 year ago

Thank you james i am trying now :).

Fatih
Fatih
1 year ago

Hey James
İ tried docker and its up running but the containers cant connected to network for example if i run portainer container its starts port 9000 but i cant connect the port its always times out. İ tried with other containers too but no luck. İ think there is a problem with ip tables. İ changed iptables,routing , bridge settings but nothing changed.

MZA
MZA
1 year ago

Hey James,
I’ve seen you’re familiar with SDR ( HackRf post). I’ve made an antenna gimbal with servos and the orangepi, mounted a UHF antenna then started monitoring RF signal using an RTL-SDR focusing on the 401.5 Mhz band.
When I fire orangepi, I see immediate increase in the noise floor by at least 10 dB which is absolutely destructive to what I’m planning to do. Do you have any hint to lower this noise ? can you try to reproduce and will you have the same result ? Do the other boards you’re testing generate the same noise ?

Thank you.

MZA
MZA
1 year ago

The setup is pretty basic and is a complete DIY :
– two servos for Azimuth and Elevation,
– a lightweight antenna,
– a relay to switch on/off servos power ( from a USB power bank)
– a small I2C 16 channels PWM board provides position signal to the servos
and the pi powered ( fired) from my laptop with USB. The pi predicts a satellite position and orders the angles to the servos.

I use RTL-SDR on my laptop with SDRConsole to monitor the RF signal caught by the antenna.

Noise Floor raises by 10 immediately when I power the pi even before uboot starts, I don’t think its the laptop USB who does that, it’s probably the pi DCDC. That’s disappointing.
Then the servos make louder noise ( +20 dB) and this is more difficult to solve.
I’ll try wrapping all this ( except the antenna) with an aluminium foil.

MZA
MZA
1 year ago

I compared the noise floor when powering the orangepi fom my laptop USB or from the power bank. When powered from the powerbank, the noise floor increases by 20, its worse.

MZA
MZA
1 year ago
Reply to  MZA

Bluetooth and Wi-fi are even not yet started, noise increases immediately with the very first lines on the console ( before setup ddr vtt to 1)

Tim
Tim
1 year ago

Hi, James. How enable hardwire SPI for use WiringPi library?

Maus
Maus
2 years ago

Hi, I am trying to enable sound on the device but without success so far. A USB sound card is detected with lsusb but not with aplay as the modules are not enabled. I have also purchased a UDA1334A I2S DAC that I would like to connect possibly.

Has anyone been succesful in using a USB or I2S sound card with the device? Many thanks!

saldzi
saldzi
1 year ago

Yes, sir. i tried V1.34. still , usb sound card not recogniced by aplay and arecord command. but listed in lsusb. i m using generic usb sound card. i m planning to use it as internet radio.

saldzi
saldzi
1 year ago

Hi, thank you very much, i tried with very quick setup, my usb sound readed by lsusb command, unfortunately still not listed with aplay -l nor arecord -l. I have tried many way i found in googled but still no luck with v1.34.
I’m not trying yet with v1.36.
Thanks again, you lighted my day.

Kirillm
Kirillm
2 years ago

How to switch to external usb Bluetooth?

Kirillm
Kirillm
2 years ago

lsusb | grep Bluetooth
Bus 001 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

hciconfig
hci0: Type: Primary Bus: UART
BD Address: 6C:DF:02:1F:9B:5D ACL MTU: 336:6 SCO MTU: 180:0
UP RUNNING PSCAN
RX bytes:2317 acl:0 sco:0 events:240 errors:0
TX bytes:4089 acl:0 sco:0 commands:240 errors:0

rfkill list
0: rda_wlan_rk: Wireless WAN
Soft blocked: no
Hard blocked: no
1: rda_bt_rk: Bluetooth
Soft blocked: no
Hard blocked: no
2: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
3: hci0: Bluetooth
Soft blocked: no
Hard blocked: no

Bus: UART not Bus: USB

Kirillm
Kirillm
2 years ago

Thanks, it is already visible but not scanning

hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: 00:1A:7D:DA:71:13 ACL MTU: 310:10 SCO MTU: 64:8
DOWN
RX bytes:547 acl:0 sco:0 events:27 errors:0
TX bytes:384 acl:0 sco:0 commands:27 errors:0
Features: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT

hci1: Type: Primary Bus: UART
BD Address: 30:B9:73:46:F2:29 ACL MTU: 336:6 SCO MTU: 180:0
UP RUNNING PSCAN
RX bytes:3516 acl:0 sco:0 events:102 errors:0
TX bytes:4424 acl:0 sco:0 commands:93 errors:0
Features: 0xff 0xff 0x8d 0xfa 0x98 0x39 0x79 0x83
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'orangepii96'
Class: 0x000000
Service Classes: Unspecified
Device Class: Miscellaneous,
HCI Version: 2.1 (0x4) Revision: 0x12e9
LMP Version: 2.1 (0x4) Subversion: 0x12e9
Manufacturer: Cambridge Silicon Radio (10)

hcitool -i hci0 scan
Invalid device: Network is down

hcitool dev
Devices:
hci1 30:B9:73:46:F2:29

Probably interferes with the built-in UART BT

?
hci1:
Manufacturer: Cambridge Silicon Radio (10)

It should be in hci0

Kirillm
Kirillm
2 years ago

hciconfig
hci1: Type: Primary Bus: USB
BD Address: 00:1A:7D:DA:71:13 ACL MTU: 310:10 SCO MTU: 64:8
DOWN
RX bytes:547 acl:0 sco:0 events:27 errors:0
TX bytes:384 acl:0 sco:0 commands:27 errors:0

hci0: Type: Primary Bus: UART
BD Address: 30:B9:73:46:F2:29 ACL MTU: 336:6 SCO MTU: 180:0
UP RUNNING PSCAN
RX bytes:2532 acl:0 sco:0 events:52 errors:0
TX bytes:2671 acl:0 sco:0 commands:44 errors:0

hcitool dev
Devices:
hci0 30:B9:73:46:F2:29

hcitool -i hci1 scan
Invalid device: Network is down

systemctl disable bluetooth_fixup
Removed /etc/systemd/system/multi-user.target.wants/bluetooth_fixup.service.

Reboot..

/etc/init.d/bluetooth start

hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: 00:1A:7D:DA:71:13 ACL MTU: 310:10 SCO MTU: 64:8
DOWN
RX bytes:547 acl:0 sco:0 events:27 errors:0
TX bytes:384 acl:0 sco:0 commands:27 errors:0
Features: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT

hcitool dev
Devices:

hcitool scan
Device is not available: No such device

hciconfig hci0 piscan
Can’t set scan mode on hci0: Network is down (100)

bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-10-12 19:58:37 UTC; 12s ago
Docs: man:bluetoothd(8)
Main PID: 496 (bluetoothd)
Status: "Running"
CGroup: /system.slice/bluetooth.service
└─496 /usr/libexec/bluetooth/bluetoothd

Oct 12 19:58:37 orangepii96 systemd[1]: Starting Bluetooth service...
Oct 12 19:58:37 orangepii96 bluetoothd[496]: Bluetooth daemon 5.55
Oct 12 19:58:37 orangepii96 systemd[1]: Started Bluetooth service.
Oct 12 19:58:37 orangepii96 bluetoothd[496]: Starting SDP server
Oct 12 19:58:37 orangepii96 bluetoothd[496]: Bluetooth management interface …zed
Oct 12 19:58:37 orangepii96 bluetoothd[496]: Failed to create GATT database …ter
Oct 12 19:58:37 orangepii96 bluetoothd[496]: Unable to register new adapter
Hint: Some lines were ellipsized, use -l to show in full.

Kirillm
Kirillm
2 years ago

lsusb | grep Bluetooth
Bus 001 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
CSR8510 4.0

Yes!
sudo hciconfig hci0 up ))
hcitool dev
Devices:
hci0 00:1A:7D:DA:71:13

Thank you very much it works!
Peace to the world!

ID 0bda:8771 Realtek Semiconductor Corp. Bluetooth Radio
Kembeteme 5.1

It doesn’t work, maybe there are no drivers, these ones worked on OpiPlus
rtl8761bu_fw
rtl8761bu_config
firmware-realtek

MZA
MZA
2 years ago

Hey James,

After a very long hours, I’ve succeeded to make the native spi work ( not with gpio ).
I’m testing it with my CAN shield and I’ll submit the corrections when concluded.

Cheers

MZA
MZA
2 years ago

Hey James,
I used the console since the beginning and was seeing these logs changing with the different updates we’ve done. It helps a lot to have them but for what you’ve posted, I only see errors due to the boot process alternatives ( no eMMC) and a bad assignment of GPIO from u-boot.
In fact, the gpio_fixup.sh is applied really late to make any spi device detected, that was one of the pbs I’ve identified and corrected. This specific correction ( assign proper functions to spi1) must be done in u-boot ( in TGT board something…). It’ll be posted.

MZA
MZA
2 years ago

Hey James,
I pushed the modifications to my git, for kernel small modifs and uboot.
I think that we can remove the gpio_fixup script now. pins allocation should be done through tgt_board … but I did not follow all the modifs you’ve done to be absolutely sure of removing it.
If you keep it, gpio A mask and setting should be modified to have spi2 pins set to alternative function.
Other correction I’ve applied to WiringPi lib is the gpio binary, I found an error on the header pin 16, i’s an audio pin, not the SPI chip select. Second correction is the SPI2 ( as shown on the schematics) is in fact spidev1 in linux and not spidev2.

My best.

MZA
MZA
2 years ago

I think there’s an incomplete update from my part or from yours.
gpio setting is not correct, I see SPI2.DI set as GPIO, it should not. I fear this image breaks multiple functions. As a quick fix, please putback the gpio_fixup and I’ll try to figure out what went wrong ASAP.

MZA
MZA
2 years ago

I’m sure it’s a new rootfs, I recompiled the kernel and uboot ( of 1.30) and got the same result as the image itself, let’s put back the gpio fixup then investigate later.

MZA
MZA
2 years ago

Now what I’m seeing is weird.
I enabled the mcp251x can driver, It got detected at bootup
[ 0.661987] CAN device driver interface
[ 0.662353] mcp251x spi1.1: max_speed_hz = 20000000, bus_speed_hz = 200000000, divider = 4
[ 0.673828] mcp251x spi1.1: probed

This means the gpio functions were OK.
I made it up and running and it was somehow working ( SPI bus properly configured) although the strange gpio readall display ( It shows SPI2.DI set to gpio function, where it is not, and D02 set to ALT while I get interrupts on this pin as gpio):
+-----+-----+----------+------+---+-Orange Pi I96+---+---+------+---------+-----+--+
| RDA | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | RDA |
+-----+-----+-----------+------+---+----++----+---+------+-----------+-----+-----+
| | | GND | | | 1 || 2 | | | GND | | |
| 40 | 40 | UART2.CTS | OUT | 0 | 3 || 4 | | | PWR_BTN_N | | |
| 104 | 104 | UART2.TX | ALT | 1 | 5 || 6 | | | RST_BTN_N | | |
| 103 | 103 | UART2.RX | ALT | 1 | 7 || 8 | 0 | ALT | SPI2.CLK | 2 | 2 |
| 41 | 41 | UART2.RTS | OUT | 0 | 9 || 10 | 0 | IN | SPI2.DI | 4 | 4 |
| 14 | 14 | UART1.TX | ALT | 1 | 11 || 12 | 0 | ALT | SPI2.CS1 | 6 | 6 |
| 102 | 102 | UART1.RX | ALT | 1 | 13 || 14 | 0 | ALT | SPI2.DO | 3 | 3 |
| 0 | 0 | I2C2.SCL | ALT | 1 | 15 || 16 | 0 | ALT | I2S_LRCK | 10 | 10 |
| 1 | 1 | I2C2.SDA | ALT | 1 | 17 || 18 | 0 | ALT | I2S.BCK | 9 | 9 |
| 38 | 38 | I2C3.SCL | ALT | 1 | 19 || 20 | 0 | ALT | I2S.DO | 13 | 13 |
| 39 | 39 | I2C3.SDA | ALT | 1 | 21 || 22 | 0 | ALT | I2S.DI | 11 | 11 |
| 15 | 15 | G.A A15 | ALT | 0 | 23 || 24 | 1 | ALT | G.B A20 | 20 | 20 |
| 56 | 56 | G.C B24 | IN | 1 | 25 || 26 | 1 | ALT | G.D D02 | 66 | 66 |
| 67 | 67 | G.E D03 | ALT | 0 | 27 || 28 | 1 | ALT | G.F A22 | 22 | 22 |
| 30 | 30 | G.G A30 | ALT | 0 | 29 || 30 | 0 | ALT | G.H A29 | 29 | 29 |
| 28 | 28 | G.I A28 | ALT | 0 | 31 || 32 | 0 | ALT | G.J 27 | 27 | 27 |
| 26 | 26 | G.K A26 | ALT | 0 | 33 || 34 | 0 | ALT | G.L A25 | 25 | 25 |
| | | V_PAD | | | 35 || 36 | | | SYS_DCIN | | |
| | | VDD_IN | | | 37 || 38 | | | SYS_DCIN | | |
| | | GND | | | 39 || 40 | | | GND | | |
+-----+-----+-----------+------+---+----++----+---+------+-----------+-----+-----+
| RDA | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | RDA |
+-----+-----+----------+------+---+-Orange Pi I96+---+------+----------+-----+-----+

I really did not go thru all the gpio_fixup script, it must have other corrections that gpio binary uses.
Sorry for suggesting its removal.
Good news, spi is OK.

MZA
MZA
2 years ago

Hey James,

Can bus is running better with the latest update to devices.c and mcp251x driver. ( Pushed to my git)