Mohu potvrdit, že to funguje na debianu 9 stretch.
yum install dkms vim-common git curl || apt install dkms git curl git clone -b vendor-drop/v0.3.6.16.1 https://github.com/acooks/tn40xx-driver.git /usr/src/tn40xx-001 cd /usr/src/tn40xx-001 curl -LO https://github.com/acooks/tn40xx-driver/files/2214805/x3310fw_0_3_3_0_9374.tar.gz tar xf x3310fw_0_3_3_0_9374.tar.gz make headers
echo " PACKAGE_NAME=tn40xx PACKAGE_VERSION=001 BUILT_MODULE_NAME[0]="\$PACKAGE_NAME" MAKE[0]="make -C \${kernel_source_dir} M=\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build MV88X3310=YES AQ=YES" CLEAN="make -C \${kernel_source_dir} M=\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build clean" DEST_MODULE_LOCATION[0]=/extra REMAKE_INITRD=no AUTOINSTALL=yes " > usr/src/tn40xx-001/dkms.conf
Teď už stačí modul buildnout a naloadovat:
dkms add -m tn40xx -v 001 dkms install -m tn40xx -v 001 --verbose modprobe tn40xx
Mnohem snazší než na Asus XG-C100C, o čemž napíšu zase někdy jindy.
Zdravím, mám Ubuntu 20.04 a toto mi nefunguje. Zkoušeno na Debianu 10 a také nefunguje. A co se týče ASUSu XG-C100C, tak na Debianu funguje ihned po zasunutí karty bez jakéhokoliv řešení ovládačů.
K návodu:
– máte chybu ve vytváření konfiguráku – poslední řádek -> chybná cesta, chybí úvodní lomítko „/“ v cestě k dkms.conf
Můj problém na Ubuntu 20.04 kernel 5.4.0-80 během „dkms install …“:
dkms install -m tn40xx -v 001 –verbose
/var/lib/dkms/tn40xx/001/source/dkms.conf: řádek 5: „MAKE[0]“: není platným identifikátorem
/var/lib/dkms/tn40xx/001/source/dkms.conf: řádek 5: -C: příkaz nenalezen
/var/lib/dkms/tn40xx/001/source/dkms.conf: řádek 6: -C: příkaz nenalezen
Kernel preparation unnecessary for this kernel. Skipping…
Building module:
make -C /lib/modules/5.4.0-80-generic/build M=/var/lib/dkms/tn40xx/001/build clean
make: Vstupuje se do adresáře „/usr/src/linux-headers-5.4.0-80-generic“
make: Opouští se adresář „/usr/src/linux-headers-5.4.0-80-generic“
{ make -j8 KERNELRELEASE=5.4.0-80-generic -C /lib/modules/5.4.0-80-generic/build M=/var/lib/dkms/tn40xx/001/build; } >> /var/lib/dkms/tn40xx/001/build/make.log 2>&1
(bad exit status: 2)
ERROR (dkms apport): binary package for tn40xx: 001 not found
Error! Bad return status for module build on kernel: 5.4.0-80-generic (x86_64)
Consult /var/lib/dkms/tn40xx/001/build/make.log for more information.
Obsah make.log:
DKMS make.log for tn40xx-001 for kernel 5.4.0-80-generic (x86_64)
So 7. srpna 2021, 10:20:23 CEST
make: Vstupuje se do adresáře „/usr/src/linux-headers-5.4.0-80-generic“
AR /var/lib/dkms/tn40xx/001/build/built-in.a
CC [M] /var/lib/dkms/tn40xx/001/build/tn40.o
CC [M] /var/lib/dkms/tn40xx/001/build/CX4.o
CC [M] /var/lib/dkms/tn40xx/001/build/CX4_Linux.o
CC [M] /var/lib/dkms/tn40xx/001/build/QT2025_phy.o
CC [M] /var/lib/dkms/tn40xx/001/build/QT2025_phy_Linux.o
CC [M] /var/lib/dkms/tn40xx/001/build/TLK10232_phy.o
CC [M] /var/lib/dkms/tn40xx/001/build/TLK10232_phy_Linux.o
CC [M] /var/lib/dkms/tn40xx/001/build/AQR105_phy.o
CC [M] /var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.o
/var/lib/dkms/tn40xx/001/build/tn40.c: In function ‘bdx_tx_map_skb’:
/var/lib/dkms/tn40xx/001/build/tn40.c:3632:13: error: assignment to ‘struct skb_frag_struct *’ from incompatible pointer type ‘skb_frag_t *’ {aka ‘struct bio_vec *’} [-Werror=incompatible-pointer-types]
3632 | frag = &skb_shinfo(skb)->frags[i];
| ^
/var/lib/dkms/tn40xx/001/build/tn40.c:3636:62: error: dereferencing pointer to incomplete type ‘struct skb_frag_struct’
3636 | dmaAddr = skb_frag_dma_map(&priv->pdev->dev, frag, 0, frag->size, PCI_DMA_TODEVICE);
| ^~
/var/lib/dkms/tn40xx/001/build/tn40.c:3636:49: error: passing argument 2 of ‘skb_frag_dma_map’ from incompatible pointer type [-Werror=incompatible-pointer-types]
3636 | dmaAddr = skb_frag_dma_map(&priv->pdev->dev, frag, 0, frag->size, PCI_DMA_TODEVICE);
| ^~~~
| |
| struct skb_frag_struct *
In file included from ./include/linux/if_ether.h:19,
from ./include/uapi/linux/ethtool.h:19,
from ./include/linux/ethtool.h:18,
from ./include/linux/netdevice.h:37,
from /var/lib/dkms/tn40xx/001/build/tn40.h:16,
from /var/lib/dkms/tn40xx/001/build/tn40.c:9:
./include/linux/skbuff.h:3087:26: note: expected ‘const skb_frag_t *’ {aka ‘const struct bio_vec *’} but argument is of type ‘struct skb_frag_struct *’
3087 | const skb_frag_t *frag,
| ~~~~~~~~~~~~~~~~~~^~~~
/var/lib/dkms/tn40xx/001/build/tn40.c: In function ‘bdx_ethtool_ops’:
/var/lib/dkms/tn40xx/001/build/tn40.c:5323:10: error: ‘struct ethtool_ops’ has no member named ‘get_settings’; did you mean ‘get_strings’?
5323 | .get_settings = bdx_get_settings,
| ^~~~~~~~~~~~
| get_strings
/var/lib/dkms/tn40xx/001/build/tn40.c:5323:30: error: initialization of ‘int (*)(struct net_device *, struct ethtool_fecparam *)’ from incompatible pointer type ‘int (*)(struct net_device *, struct ethtool_cmd *)’ [-Werror=incompatible-pointer-types]
5323 | .get_settings = bdx_get_settings,
| ^~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/tn40.c:5323:30: note: (near initialization for ‘bdx_ethtool_ops.get_fecparam’)
/var/lib/dkms/tn40xx/001/build/tn40.c:5324:10: error: ‘struct ethtool_ops’ has no member named ‘set_settings’; did you mean ‘get_strings’?
5324 | .set_settings = bdx_set_settings,
| ^~~~~~~~~~~~
| get_strings
/var/lib/dkms/tn40xx/001/build/tn40.c:5324:30: error: initialization of ‘int (*)(struct net_device *, struct ethtool_fecparam *)’ from incompatible pointer type ‘int (*)(struct net_device *, struct ethtool_cmd *)’ [-Werror=incompatible-pointer-types]
5324 | .set_settings = bdx_set_settings,
| ^~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/tn40.c:5324:30: note: (near initialization for ‘bdx_ethtool_ops.set_fecparam’)
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:269: /var/lib/dkms/tn40xx/001/build/tn40.o] Chyba 1
make[1]: *** Čeká se na nedokončené úlohy…
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c: In function ‘AQR105_set_link_mode’:
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:94:28: error: ‘__ETHTOOL_LINK_MODE_LAST’ undeclared (first use in this function); did you mean ‘__ETHTOOL_LINK_MODE_MASK_NBITS’?
94 | #define AQR105_ALL_SPEEDS (__ETHTOOL_LINK_MODE_LAST+1)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:101:15: note: in expansion of macro ‘AQR105_ALL_SPEEDS’
101 | if (speed == AQR105_ALL_SPEEDS)
| ^~~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:94:28: note: each undeclared identifier is reported only once for each function it appears in
94 | #define AQR105_ALL_SPEEDS (__ETHTOOL_LINK_MODE_LAST+1)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:101:15: note: in expansion of macro ‘AQR105_ALL_SPEEDS’
101 | if (speed == AQR105_ALL_SPEEDS)
| ^~~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c: In function ‘AQR105_get_link_ksettings’:
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:94:28: error: ‘__ETHTOOL_LINK_MODE_LAST’ undeclared (first use in this function); did you mean ‘__ETHTOOL_LINK_MODE_MASK_NBITS’?
94 | #define AQR105_ALL_SPEEDS (__ETHTOOL_LINK_MODE_LAST+1)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:140:50: note: in expansion of macro ‘AQR105_ALL_SPEEDS’
140 | AQR105_set_link_mode(cmd->link_modes.supported, AQR105_ALL_SPEEDS);
| ^~~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c: In function ‘AQR105_set_link_ksettings’:
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:94:28: error: ‘__ETHTOOL_LINK_MODE_LAST’ undeclared (first use in this function); did you mean ‘__ETHTOOL_LINK_MODE_MASK_NBITS’?
94 | #define AQR105_ALL_SPEEDS (__ETHTOOL_LINK_MODE_LAST+1)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.c:166:48: note: in expansion of macro ‘AQR105_ALL_SPEEDS’
166 | AQR105_set_link_mode(priv->link_advertising, AQR105_ALL_SPEEDS);
| ^~~~~~~~~~~~~~~~~
make[1]: *** [scripts/Makefile.build:269: /var/lib/dkms/tn40xx/001/build/AQR105_phy_Linux.o] Chyba 1
make: *** [Makefile:1762: /var/lib/dkms/tn40xx/001/build] Chyba 2
make: Opouští se adresář „/usr/src/linux-headers-5.4.0-80-generic“
Děkuji za pomoc
řešil jsem stejný problém a potvrzuji, že uvedené řešení na debianu 10 a 11 už nefunguje. Na debianu 9 a ubuntu 18.04 LTS fungovalo OK. A při jakémkoliv upgradu kernelu je nutné provést rekompilaci. Situaci s 10Gbps síťovými kartami jsem nakonec vyřešil v soukromí velmi elegantně a hlavně LEVNĚ za 3265 CZK s DPH tento switch: https://www.mironet.cz/dlink-dgs121024-24port-gigabit-smart-switch-20x-gigabit-4x-gigabitsfp+dp109318/ Dnes 3.11.2021 vidím cenu 4538 CZK. Každopádně per stroj, 3x 1Gbps síťovka, LACP agregované spoje 802.3ad a běhá to vcelku obstojně dle představ. Po propočtech rychlosti disků, propustnostech SSD jsem naznal, že dokud nebudu mít plně SSD pole, tak pro mě 10Gbps v soukromí postrádá smysl. V produkci, kde mám 10Gbps jen u diskových polí jsem nakonec taky skončil s agregovanými spoji minimálně 2×1 až 4x1Gbps s výjimkou u diskových polí v RAIDu 61/51, kde jsou ovšem značkové 10Gbps síťovky HP/DELL/Intel. Kdybych u 3 strojů počítal stejnou kalkulaci s 10Gbps síťovkami (což jsem počítal před rokem) tak bych se dostal na cca 18 tisíc korun a to prostě pro můj use case již přestalo dávat smysl. Uvedené síťovky je proto fajn mít buď na windows, kde s ovladačem problémy nejsou, nebo se budete hodně trápit s ovladači zejména u toho edimaxu pokaždé, když budete provádět upgrade, nebo přechod napříč major verzemi kernelu. Nicméně, k vašemu problému. Zkuste tohle:
https://githubmemory.com/repo/acooks/tn40xx-driver/issues/46
a pak tohle:
https://github.com/acooks/tn40xx-driver
A díky za info ohledně té ASUSu XG-C100C. Já se domníval, že by to šlo až po povolení non-free repozitářů.