OpenWrt Forum Archive

Topic: I2C Port Expander (PCF) on GL-Inet Routers [SOLVED]

The content of this topic has been archived on 24 Mar 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

EDIT: I was being a moron and was grep'ing "i2c" packages and neglected to install one. It is all good now after:
#opkg install kmod-gpio-pcf857x

I started off with the 6416A which came loaded with GL's modified Barrier Breaker image installed. I need 7 GPIOs for the project I am working on that I am trying to use a travel router for. I was able to get those GPIOs using a pcf8574 on that model without a hitch and it works flawless.

The problem is that in that model there is poor USB negotiation in it and the external wifi adapter I need to use with it only works 100% of the time if I plug a USB hub in between the router and adapter. The hub can be unpowered or powered, doesn't matter - so it is not a power issue, it is with the initial negotiation.

I get the same result with the adapter on the AR150 which isn't surprising since it is runs the same SoC.

I tried the MT300N and it performed great for what I need it for and works fine with the adapter. The problem is I2C does not appear to be implemented properly or there is a tricky way required to get it working I have not yet determined. But, I'm leaning towards it being an issue in the CC distro itself as opposed to the variances in the chipsets, because I can't get it working on the AR150 which runs CC (I've tried the GL image and a standard OpenWRT image) but has basically the same hardware as the 6416.

On the MT300N I've tried the GL version and the standard OpenWRT also, and I get close, but it appears that "gpiochip_add" never runs. I chose GPIO 2 and 44 on this one for the data and clock and confirmed they functioned as expected as regular GPIOs testing the input and output.

#insmod i2c-gpio-custom bus0=0,2,44
dmesg seems to indicate no problem with this except for possible the first line ("not parsing pinctrl DT" ?)
[   99.100000] i2c-gpio i2c-gpio.0: no of_node; not parsing pinctrl DT
[   99.100000] rt2880-pinmux pinctrl: request pin 2 (io2) for pio:2
[   99.100000] rt2880-pinmux pinctrl: request pin 44 (io44) for pio:44
[   99.100000] i2c-gpio i2c-gpio.0: using pins 2 (SDA) and 44 (SCL)

#i2cdetect 0
reports the device was found at 0x20 (no new errors or logs in dmesg). this is expected as this is the address this same expander runs on just fine with the 6416 with BB.

#echo pcf8574 0x20 > /sys/bus/i2c/devices/i2c-0/new_device
dmesg reports it seems OK with [  268.870000] i2c i2c-0: new_device: Instantiated device pcf8574 at 0x20

But the dmesg is missing an important part, “gpiochip_add” is missing in that log that tells us it created a new chip for the expander and what new GPIOs were registered on the device. If it were working like it should it would say something like this as it does on the 6416: “gpiochip_add: registered GPIOs 56 to 63 on device: pcf8574″

I have been at this for days with no luck. I tried installing every i2c and gpio related package available even beyond the ones I've needed in the past on other models/distros, doing it one by one and rebooting just to see if that would solve it.

I am truly hoping someone can offer a solution to getting 7+ GPIOs (in and out) on a MT300N. At this point though I have feeling it might be more centered around CC missing I2C functionality or errors, so if anyone can comment on getting a port expander to work on CC that might be a start.

I have not tried the trunk (DD) yet but that is going to be my next step if I can't make headway with some expert guidance in this forum. I haven't jumped straight to that just yet since this project requires a stable and well tested install and the trunk is not probably the match for the needs. I'm also considering trying to build a BB image for the MT300N but before I waste more time down rabbit holes I want to see if someone can point me in a better direction.

TIA for any help!

(Last edited by bizee on 24 Jan 2017, 05:12)

Whats the output of lsmod?

Thanks for the reply, and I apologize for the delayed response. Had a crisis take place in the colo facility and it was all hands on deck for a while day and night.

So I here are two outputs of the lsmod. I have included the 6416 (runs BB and it works perfect). I have also included the output from the AR150 (runs CC, and as I'm sure you know nearly identical hardware as 6416) which doesn't even detect the same chip using i2cdetect. Before you assume it must a be problem with the connection or something I have separately verified the GPIOs function as standard gpios by setting them as "out" and toggling the hi/lo state to ensure they are working and have a good connection.

The MT600N is the one I'm really looking forward to getting to work, and I will output that one next. That one does detect the I2C device at the right address but never adds a new chip with available GPIOs even though it says it is instantiated.

------ 6416A (RUNS BB AND WORKS PERFECT) --------

root@GL-iNet:/sys/class/gpio# lsmod
act_connmark             944  0
act_mirred              2480  0
act_skbedit             1760  0
arc4                    1312  2
ath                    19701  3 ath9k
ath9k                  88337  0
ath9k_common           11437  1 ath9k
ath9k_hw              314927  2 ath9k
cdc_acm                12528  0
cdc_ether               3548  1 rndis_host
cfg80211              197607  5 ath9k
cls_flow                4960  0
cls_fw                  3216  0
cls_route               5008  0
cls_tcindex             3808  0
cls_u32                 5648  0
compat                  1988  5 ath9k
cp210x                  7248  0
crc16                   1015  1 ext4
crc_ccitt               1019  2 rt2800lib
crc_itu_t               1019  0
crypto_blkcipher       10375  1 arc4
crypto_hash             9514  2 ext4
ehci_hcd               30780  1 ehci_platform
ehci_platform           1872  0
em_u32                   576  0
ext4                  296579  0
fat                    45775  1 vfat
fuse                   60913  0
gpio_button_hotplug     4432  0
gspca_main             18841  3 gspca_zc3xx
gspca_sonixb            8976  0
gspca_sonixj           20624  0
gspca_zc3xx            34944  0
i2c_dev                 4064  0
i2c_gpio_custom          880  0
ifb                     2672  0
input_core             24297  5 gspca_zc3xx
ip6_tables              9105  3 ip6table_raw
ip6t_REJECT             2032  2
ip6table_filter          656  1
ip6table_mangle         1056  1
ip6table_raw             576  1
ip_tables               9197  4 iptable_nat
ipt_ECN                 1344  0
ipt_MASQUERADE          1136  1
ipt_REJECT              1808  2
iptable_filter           720  1
iptable_mangle           960  1
iptable_nat             1968  1
iptable_raw              640  1
ipv6                  248940 28 ip6t_REJECT
jbd2                   46508  1 ext4
mac80211              345633  4 ath9k
mbcache                 3981  1 ext4
nf_conntrack           46014 18 iptable_nat
nf_conntrack_ftp        5120  1 nf_nat_ftp
nf_conntrack_ipv4       5188 11
nf_conntrack_ipv6       5552  3
nf_conntrack_irc        2784  1 nf_nat_irc
nf_defrag_ipv4           790  1 nf_conntrack_ipv4
nf_defrag_ipv6          8711  1 nf_conntrack_ipv6
nf_nat                 10592  7 iptable_nat
nf_nat_ftp              1200  0
nf_nat_ipv4             2654  1 iptable_nat
nf_nat_irc               976  0
nls_base                4974  7 vfat
nls_cp437               4432  0
nls_iso8859_1           2896  0
nls_utf8                 864  0
ntfs                   88755  0
ohci_hcd               16608  0
option                 26608  0
ppp_async               6144  0
ppp_generic            19634  3 pppoe
pppoe                   7744  0
pppox                   1338  1 pppoe
rndis_host              4889  0
rt2800lib              91441  1 rt2800usb
rt2800usb              13936  0
rt2x00lib              33311  3 rt2800usb
rt2x00usb               7641  1 rt2800usb
sch_hfsc               13408  0
sch_ingress              944  0
scsi_mod               76866  2 usb_storage
sd_mod                 24560  0
slhc                    4299  1 ppp_generic
ts_bm                   1392  0
ts_fsm                  2528  0
ts_kmp                  1328  0
uhci_hcd               18240  0
usb_common              1160  1 usbcore
usb_storage            36248  0
usb_wwan                4524  1 option
usbcore               109781 20 rt2800usb
usbnet                 16383  2 rndis_host
usbserial              18407  3 option
uvcvideo               60792  0
v4l2_common             6618  0
vfat                    7936  0
videobuf2_core         22489  1 uvcvideo
videobuf2_memops        1216  1 videobuf2_vmalloc
videobuf2_vmalloc       2017  1 uvcvideo
videodev               81544  7 gspca_zc3xx
x_tables               10997 42 ipt_MASQUERADE
xt_CLASSIFY              576  0
xt_CT                   2272  0
xt_DSCP                 1440  0
xt_HL                   1296  0
xt_LOG                  9488  0
xt_REDIRECT             1056  0
xt_TCPMSS               2672  2
xt_comment               480 75
xt_connbytes            1488  0
xt_connlimit            2480  0
xt_connmark             1040  3
xt_conntrack            2160 10
xt_dscp                  976  0
xt_ecn                  1280  0
xt_helper                880  0
xt_hl                    784  0
xt_id                    480  0
xt_length                672  1
xt_limit                 992 20
xt_mac                   608  0
xt_mark                  672 28
xt_multiport            1184 10
xt_nat                  1072  0
xt_recent               6336  0
xt_state                 688  0
xt_statistic             784  0
xt_string                784  0
xt_tcpmss                992  0
xt_tcpudp               1680 32
xt_time                 1664  0

DMESG
[   56.010000] i2c /dev entries driver
[   62.090000] Custom GPIO-based I2C driver version 0.1.1
[   62.100000] i2c-gpio i2c-gpio.0: using pins 20 (SDA) and 19 (SCL)
[   81.180000] pcf857x 0-0020: probed
[   81.190000] i2c i2c-0: new_device: Instantiated device pcf8574 at 0x20



---- AR150 (Runs CC and cannot even detect the device with i2cdetect) -----

root@GL-AR150:~# lsmod
act_connmark             832  0
act_mirred              2336  0
act_skbedit             1600  0
arc4                    1312  2
ath                    20021  3 ath9k
ath9k                  87174  0
ath9k_common           19150  1 ath9k
ath9k_hw              336705  2 ath9k
cdc_acm                13872  0
cdc_ether               3788  1 rndis_host
cfg80211              216499  5 ath9k
cls_flow                5040  0
cls_fw                  3456  0
cls_route               4576  0
cls_tcindex             4256  0
cls_u32                 6176  0
compat                 14306  5 ath9k
cp210x                  7376  0
crc16                   1015  1 ext4
crc_ccitt               1019  2 rt2800lib
crc_itu_t               1019  0
crypto_blkcipher       10503  1 arc4
crypto_hash             9730  2 ext4
dma_shared_buffer      13766  2 videobuf2_vmalloc
ehci_hcd               32092  1 ehci_platform
ehci_platform           3488  0
em_u32                   576  0
exfat                  92619  0
ext4                  312092  0
fat                    47503  1 vfat
fuse                   65977  0
gpio_button_hotplug     4464  0
gspca_main             19049  3 gspca_zc3xx
gspca_sonixb            9344  0
gspca_sonixj           21152  0
gspca_zc3xx            35328  0
i2c_algo_pcf            4065  0
i2c_dev                 4096  0
i2c_gpio_custom          880  0
i2c_mux                 1545  1 i2c_mux_gpio
i2c_mux_gpio            2384  0
ifb                     2656  0
input_core             24510  5 gspca_zc3xx
ip6_tables              9281  3 ip6table_raw
ip6t_REJECT             1184  2
ip6table_filter          608  1
ip6table_mangle         1072  1
ip6table_raw             576  1
ip_tables               9421  4 iptable_nat
ipheth                  4912  0
ipt_ECN                 1376  0
ipt_MASQUERADE           624  1
ipt_REJECT               912  2
iptable_filter           672  1
iptable_mangle           944  1
iptable_nat              768  1
iptable_raw              640  1
ipv6                  270067 30 nf_conntrack_ipv6
jbd2                   47554  1 ext4
ledtrig_usbdev          1936  0
mac80211              397898  4 ath9k
mbcache                 4557  1 ext4
mii                     3528  1 usbnet
nf_conntrack           48862 16 nf_nat_ipv4
nf_conntrack_ftp        5280  1 nf_nat_ftp
nf_conntrack_ipv4       5152 11
nf_conntrack_ipv6       5536  3
nf_conntrack_rtcache    2480  0
nf_defrag_ipv4           838  1 nf_conntrack_ipv4
nf_defrag_ipv6          9095  1 nf_conntrack_ipv6
nf_log_common           2479  2 nf_log_ipv4
nf_log_ipv4             3136  0
nf_log_ipv6             3296  0
nf_nat                  9948  5 nf_nat_ipv4
nf_nat_ftp              1200  0
nf_nat_ipv4             4225  1 iptable_nat
nf_nat_masquerade_ipv4    1388  1 ipt_MASQUERADE
nf_reject_ipv4          1955  1 ipt_REJECT
nf_reject_ipv6          2055  1 ip6t_REJECT
nls_base                4976  8 vfat
nls_cp437               4432  0
nls_iso8859_1           2896  0
nls_utf8                 864  0
ntfs                   88963  0
ohci_hcd               22207  1 ohci_platform
ohci_platform           2864  0
option                 27328  0
ppp_async               6320  0
ppp_generic            20610  3 pppoe
pppoe                   8144  0
pppox                   1354  1 pppoe
rndis_host              4937  0
rt2800lib              91632  1 rt2800usb
rt2800usb              15616  0
rt2x00lib              33375  3 rt2800usb
rt2x00usb               7609  1 rt2800usb
sch_hfsc               13344  0
sch_ingress              944  0
scsi_mod               85623  2 usb_storage
sd_mod                 25616  0
slhc                    4299  1 ppp_generic
tun                    15135  0
uhci_hcd               18288  0
usb_common              1160  1 usbcore
usb_storage            37695  0
usb_wwan                4615  1 option
usbcore               118264 23 rt2800usb
usbnet                 17014  2 rndis_host
usbserial              18187  3 option
uvcvideo               61703  0
v4l2_common             4003  1 videobuf2_core
vfat                    7936  0
videobuf2_core         28748  1 uvcvideo
videobuf2_memops        1216  1 videobuf2_vmalloc
videobuf2_vmalloc       2017  1 uvcvideo
videodev               96375  7 gspca_zc3xx
x_tables               10741 41 ipt_REJECT
xt_CLASSIFY              576  0
xt_CT                   2224  0
xt_DSCP                 1504  0
xt_HL                   1296  0
xt_LOG                   768  0
xt_REDIRECT             1056  0
xt_TCPMSS               2608  2
xt_comment               480 80
xt_connbytes            1488  0
xt_connlimit            3360  0
xt_connmark             1040  3
xt_conntrack            2160 10
xt_dscp                  992  0
xt_ecn                  1296  0
xt_helper                880  0
xt_hl                    800  0
xt_id                    480  0
xt_length                688  1
xt_limit                 992 20
xt_mac                   624  0
xt_mark                  672 28
xt_multiport            1184 10
xt_nat                  1072  0
xt_recent               6336  0
xt_state                 688  0
xt_statistic             784  0
xt_tcpmss                992  0
xt_tcpudp               1696 30
xt_time                 1632  0

Here is the output from the MT-600N (runs CC). The only difference I saw between the 6416A and this, besides that it never actually adds a new gpio chip, is that in dmesg on the 6416 it says "pcf857x 0-0020: probed" on the line before it says the device was instantiated. The line does not appear in the dmesg on the MT-600N. Also, this line that appears in the MT-600N seems ominous "i2c-gpio i2c-gpio.0: no of_node; not parsing pinctrl DT"

root@GL-MT300N:~# lsmod
act_connmark             832  0
act_mirred              2336  0
act_skbedit             1600  0
aead                    4272  0
arc4                    1312  2
cdc_acm                13808  0
cdc_ether               3740  1 rndis_host
cdc_ncm                11333  1 huawei_cdc_ncm
cdc_wdm                 7797  2 qmi_wwan
cfg80211              216515  2 rt2x00lib
cls_flow                5136  0
cls_fw                  3456  0
cls_route               4576  0
cls_tcindex             4256  0
cls_u32                 6208  0
compat                 14354  5 rt2800usb
cp210x                  7360  0
crc16                   1015  1 ext4
crc_ccitt               1019  2 rt2800lib
crc_itu_t               1019  0
crypto_blkcipher       10503  2 ecb
crypto_hash             9730  3 sha1_generic
dma_shared_buffer      13766  2 videobuf2_vmalloc
dwc2                   48407  1 dwc2_platform
dwc2_platform           1888  0
ecb                     1328  0
eeprom_93cx6            1807  1 rt2800pci
ehci_hcd               31516  1 ehci_platform
ehci_platform           3744  0
em_u32                   576  0
exfat                  91467  0
ext4                  304188  0
fat                    46991  1 vfat
fuse                   66329  0
gpio_button_hotplug     6000  0
gre                     3387  2 pptp
gspca_main             18985  3 gspca_zc3xx
gspca_sonixb            9344  0
gspca_sonixj           21152  0
gspca_zc3xx            35328  0
huawei_cdc_ncm          1520  0
i2c_algo_bit            4538  1 i2c_gpio
i2c_algo_pcf            4065  0
i2c_core               16709  6 v4l2_common
i2c_dev                 4096  0
i2c_gpio                2592  0
i2c_gpio_custom          880  0
ifb                     2656  0
input_core             24510  5 gspca_zc3xx
ip6_tables              9185  3 ip6table_raw
ip6_udp_tunnel          1319  1 l2tp_core
ip6t_REJECT             1184  2
ip6table_filter          608  1
ip6table_mangle         1040  1
ip6table_raw             576  1
ip_gre                  6688  0
ip_set                 21380 16 xt_set
ip_set_bitmap_ip        6768  0
ip_set_bitmap_ipmac     6544  0
ip_set_bitmap_port      6000  0
ip_set_hash_ip         16992  0
ip_set_hash_ipmark     17088  0
ip_set_hash_ipport     17648  0
ip_set_hash_ipportip   18448  0
ip_set_hash_ipportnet   23776  0
ip_set_hash_mac         8656  0
ip_set_hash_net        20832  0
ip_set_hash_netiface   22784  0
ip_set_hash_netnet     23856  0
ip_set_hash_netport    22464  0
ip_set_hash_netportnet   25008  0
ip_set_list_set         7376  0
ip_tables               9389  4 iptable_nat
ip_tunnel              10579  1 ip_gre
ipheth                  4912  0
ipt_ECN                 1392  0
ipt_MASQUERADE           624  1
ipt_REJECT               912  2
iptable_filter           672  1
iptable_mangle           928  1
iptable_nat              768  1
iptable_raw              640  1
ipv6                  270403 33 nf_conntrack_ipv6
jbd2                   48194  1 ext4
l2tp_core              12925  2 l2tp_ppp
l2tp_netlink            6616  1 l2tp_ppp
l2tp_ppp               12976  0
leds_gpio               2896  0
mac80211              396074  5 rt2800lib
mbcache                 4557  1 ext4
mii                     3528  1 usbnet
mmc_block              21473  0
mmc_core               73702  3 mmc_block
mtk_sd                 15440  0
nf_conntrack           49022 32 nf_nat_pptp
nf_conntrack_amanda     1824  1 nf_nat_amanda
nf_conntrack_broadcast     845  1 nf_conntrack_snmp
nf_conntrack_ftp        5280  1 nf_nat_ftp
nf_conntrack_h323      34511  1 nf_nat_h323
nf_conntrack_ipv4       5152 11
nf_conntrack_ipv6       5536  3
nf_conntrack_irc        2832  1 nf_nat_irc
nf_conntrack_pptp       3200  1 nf_nat_pptp
nf_conntrack_proto_gre    2766  1 nf_conntrack_pptp
nf_conntrack_rtcache    2480  0
nf_conntrack_sip       17981  1 nf_nat_sip
nf_conntrack_snmp        784  1 nf_nat_snmp_basic
nf_conntrack_tftp       2832  1 nf_nat_tftp
nf_defrag_ipv4           838  1 nf_conntrack_ipv4
nf_defrag_ipv6          9079  1 nf_conntrack_ipv6
nf_log_common           2559  2 nf_log_ipv4
nf_log_ipv4             3248  0
nf_log_ipv6             3376  0
nf_nat                 10028 12 nf_nat_pptp
nf_nat_amanda            784  0
nf_nat_ftp              1216  0
nf_nat_h323             4992  0
nf_nat_ipv4             4257  1 iptable_nat
nf_nat_irc              1008  0
nf_nat_masquerade_ipv4    1372  1 ipt_MASQUERADE
nf_nat_pptp             1504  0
nf_nat_proto_gre         880  1 nf_nat_pptp
nf_nat_sip              7024  0
nf_nat_snmp_basic       6960  0
nf_nat_tftp              560  0
nf_reject_ipv4          1939  1 ipt_REJECT
nf_reject_ipv6          2215  1 ip6t_REJECT
nfnetlink               4027  1 ip_set
nls_base                5008  8 vfat
nls_cp437               4432  0
nls_iso8859_1           2896  0
nls_utf8                 864  0
ntfs                   88451  0
ohci_hcd               21951  1 ohci_platform
ohci_platform           3248  0
option                 27200  0
ppp_async               6352  0
ppp_generic            20626  6 pppoe
ppp_mppe                4800  0
pppoe                   8128  0
pppox                   1354  3 pppoe
pptp                   13552  0
qmi_wwan               10416  0
rndis_host              4761  0
rt2800lib              91568  4 rt2800usb
rt2800mmio              6338  2 rt2800soc
rt2800pci               3968  0
rt2800soc               2512  0
rt2800usb              15408  0
rt2x00lib              34111  9 rt2800usb
rt2x00mmio              1904  3 rt2800soc
rt2x00pci               1522  1 rt2800pci
rt2x00soc               1202  1 rt2800soc
rt2x00usb               7577  1 rt2800usb
sch_hfsc               13344  0
sch_ingress              944  0
scsi_mod               85639  2 usb_storage
sd_mod                 26288  0
sdhci                  18333  1 sdhci_pltfm
sdhci_pltfm             2770  0
sha1_generic            1507  0
sierra                  6112  0
sierra_net              5648  0
slhc                    4347  1 ppp_generic
ts_bm                   1392  0
ts_fsm                  2528  0
ts_kmp                  1328  5
tun                    15135  0
udp_tunnel              1348  1 l2tp_core
usb_common              1740  2 dwc2_platform
usb_storage            37439  0
usb_wwan                4391  1 option
usbcore               117704 29 rt2800usb
usbnet                 16982  6 sierra_net
usbserial              18059  4 option
uvcvideo               62151  0
v4l2_common             4003  1 videobuf2_core
vfat                    7840  0
videobuf2_core         28764  1 uvcvideo
videobuf2_memops        1216  1 videobuf2_vmalloc
videobuf2_vmalloc       2145  1 uvcvideo
videodev               97390  7 gspca_zc3xx
x_tables               10741 42 ipt_REJECT
xt_CLASSIFY              576  0
xt_CT                   2224  0
xt_DSCP                 1536  0
xt_HL                   1296  0
xt_LOG                   768  0
xt_REDIRECT             1056  0
xt_TCPMSS               2656  2
xt_comment               480 76
xt_connbytes            1520  0
xt_connlimit            3376  0
xt_connmark             1040  3
xt_conntrack            2144 10
xt_dscp                 1008  0
xt_ecn                  1296  0
xt_helper                880  0
xt_hl                    800  0
xt_id                    480  0
xt_length                704  1
xt_limit                 992 20
xt_mac                   624  0
xt_mark                  672 28
xt_multiport            1200 10
xt_nat                  1072  0
xt_recent               6320  0
xt_set                  5712  0
xt_state                 688  0
xt_statistic             784  0
xt_tcpmss                992  0
xt_tcpudp               1728 26
xt_time                 1648  0

--- DMESG OUTPUT (after running "insmod i2c-gpio-custom bus0=0,2,44" and "echo pcf8574 0x20 > /sys/bus/i2c/devices/i2c-0/new_device" ) ----

[  101.050000] Custom GPIO-based I2C driver version 0.1.1
[  101.060000] i2c-gpio i2c-gpio.0: no of_node; not parsing pinctrl DT
[  101.060000] rt2880-pinmux pinctrl: request pin 2 (io2) for pio:2
[  101.070000] rt2880-pinmux pinctrl: request pin 44 (io44) for pio:44
[  101.080000] i2c-gpio i2c-gpio.0: using pins 2 (SDA) and 44 (SCL)
[  173.000000] i2c i2c-0: new_device: Instantiated device pcf8574 at 0x20

Being desperate I install the trunk (DD) mt-300n image to see if that was any better. I installed all of the needed packages and again i2cdetect found my pcf8574 on address 0x20. I tried to create the new I2C device for with:
echo pcf8574 0x20 > /sys/bus/i2c/devices/i2c-0/new_device

And again it did nothing, in the sense that it did not create any new chips in /sys/class/gpio or make any new gpios available as far as I could tell.

What's interesting in Barrier Breaker there was not PCF package as far as I recall. So I think that was split out of another package and perhaps in the process something was messed up.

If anyone has successfully ran a port expander on CC or DD, especially a PCF chip, that experience would surely help me troubleshoot mine. Or, if no one has accomplished this yet it could point further to a bug.

I just wish I were better at debugging on the hardware and kernel level but unfortunately that's not my realm of expertise or I would be all over it. I'm willing to give it a shot though if anyone can perhaps point me in the right direction on what tools I should be using to get the verbose and info I need.

Thank you.

Edit: I did try it with every i2c related package installed.
i2c-tools - 3.1.2-1
kmod-i2c-algo-bit - 4.4.14-1
kmod-i2c-algo-pca - 4.4.14-1
kmod-i2c-algo-pcf - 4.4.14-1
kmod-i2c-core - 4.4.14-1
kmod-i2c-gpio - 4.4.14-1
kmod-i2c-gpio-custom - 4.4.14-2
kmod-i2c-mux - 4.4.14-1
kmod-i2c-mux-gpio - 4.4.14-1
kmod-i2c-mux-pca9541 - 4.4.14-1
kmod-i2c-mux-pca954x - 4.4.14-1
kmod-i2c-ralink - 4.4.14-1
kmod-i2c-tiny-usb - 4.4.14-1

(Last edited by bizee on 22 Jan 2017, 11:05)

I think you miss kmod-gpio-pcf857x, just install it with opkg.

SMH... I am so embarrassed that I overlooked that after all of this anguish and time trying to get it to work and assuming it was a bug. Thank you very much for pointing that out. 

I kept grep'ing "i2c" on my packages so that one never crossed my mind. I had compared the relevant package difference between my router running BB and the CC/DD builds more than once and I don't know how I missed it that way also. Seriously, thank you again for replying and identifying my trivial mistake because who knows how much more time I would have spent spinning my wheels before I realized it.

The discussion might have continued from here.