Po. Bře 18th, 2024

Mohu potvrdit, že to funguje na debianu 9 stretch.

fotografie síťové karty Edimax

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.

zdroj

Avatar

By mirra

Hardwaru a počítačům se věnuji již od roku 2003. Za tu dobu jsem poskládal stovky počítačů, opravil tisíce počítačů a vyřešil nespočetně problémů, vad a chyb, se kterými se setkávali uživatelé. Od roku 2005 se zabývám servery, zejména těmi herními, v roce 2007 jsem se začal věnovat Valve Source SDK level designu, který šel od roku 2009 k ledu kvůli studiu Informatiky na univerzitě. Podílel jsem se chvíli i na provozu síťové laboratoře MENDELU, dnes spravuji cca 30 serverů/diskových polí na univerzitě, řeším IT v malých a středních firmách tak, aby firmy ušetřily nemalé částky při zlepšení kvality a soustředím se na snižování nákladů na IT od licencí až po hardware, software, provádím konsolidace a audity platnosti licencí, které firmám šetří rovněž nemalé peníze. Z velkých firem spravuji s dalšími kolegy 8000 serverů po celé Evropě a tato práce mě nesmírně baví, protože se vše musí automatizovat a nabízí mi to možnost trénovat další evropské jazyky od Angličtiny, přes Němčinu až po Italštinu.

2 thoughts on “Edimax EN-9320TX-E 10GbE Ethernet Card na ubuntu a Centos Linuxu”
  1. 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

    1. ř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ářů.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

16 + five =