Softvérový reštart USB portu

Sekcia: Konfigurácia 12.05 | 09:51
Avatar Pavel Linux Mint, Manjaro  Administrátor

Ahojte, tuším som túto tému už načal v minulosti ale vrátim sa k tomu. Na jeden starší Dell 755ku som nahodil Linux Mint s Xfce a na pripojenie na net som použil externú wifinu TP-LINK WN822N. Pri niektorom štarte LM sa wifina nechytí a musím ju vytiahnuť a naspäť zasunúť do usbčka, toto ak sa nemýlim robila aj v iných distrách. A tak ma napadla otázka, nedá sa softvérovo nejakým skriptom alebo príkazom reštartnúť konkrétny USB port? Počítač mám u rodičov, takže sa neviem momentálne dostať k detailnejším informáciám, to ma len teraz napadlo,,,

    • RE: Softvérový reštart USB portu 12.05 | 10:42
      Avatar WlaSaTy   Návštevník

      Dá, samozrejme že dá. Nestačilo by ale vypnúť a zapnúť sieť cez network manager (nmcli conn down,up "názov")? Ďalšia možnosť je odčítať a znovu načítať ovládač (modprobe -vr ovladac.ko; sleep 5; modprobe -v ovladac.ko), ale to chce roota. A až na koniec by som riešil detektívku so SW odpájaním a zapojením špecifického portu ktoré ublbne keďže veľa krát je tých 5V na pevno zapnutých.

      • RE: Softvérový reštart USB portu 12.05 | 12:02
        Avatar Pavel Linux Mint, Manjaro  Administrátor

        Ide mi len o to, aby som sa nemusel fyzicky hrabať vzadu v bedni zakaždým, keď wifina nenabehne, kľudne aj príkaz pod rootom.

        • RE: Softvérový reštart USB portu 12.05 | 13:16
          Avatar redhawk75 mx19, galliumos, antiX, Devuan,  Používateľ
        • RE: Softvérový reštart USB portu 12.05 | 13:43
          Avatar WlaSaTy   Návštevník

          Áno, podobne som to používal aj ja, ale nerobil som reset zariadenia. Občas mi ten jednoduchý reset totižto nechal dané zariadenie v stave, keď mu vytuhol firmware a musel som ho potom vytiahnuť, nechať chvíľu vychladnúť a až potom zasunúť. Preto som to robil jednoduchým reštartom konekcie, alebo vyhodením a znovu načítaním ovládačov.

    • RE: Softvérový reštart USB portu 12.05 | 13:14
      Avatar redhawk75 mx19, galliumos, antiX, Devuan,  Používateľ
      /* usbreset -- send a USB port reset to a USB device */
      
      #include <stdio.h>
      #include <unistd.h>
      #include <fcntl.h>
      #include <errno.h>
      #include <sys/ioctl.h>
      
      #include <linux/usbdevice_fs.h>
      
      
      int main(int argc, char **argv)
      {
          const char *filename;
          int fd;
          int rc;
      
          if (argc != 2) {
              fprintf(stderr, "Usage: usbreset device-filename\n");
              return 1;
          }
          filename = argv[1];
      
          fd = open(filename, O_WRONLY);
          if (fd < 0) {
              perror("Error opening output file");
              return 1;
          }
      
          printf("Resetting USB device %s\n", filename);
          rc = ioctl(fd, USBDEVFS_RESET, 0);
          if (rc < 0) {
              perror("Error in ioctl");
              return 1;
          }
          printf("Reset successful\n");
      
          close(fd);
          return 0;
      }

      ulozit ako usbreset.c

      skompilovat: 

      cc usbreset.c -o usbreset

      spravit spustitelnym:

      chmod +x usbreset
      

      spustit:

      sudo ./usbreset /dev/bus/usb/002/003 

       

      Zistenie portu lsusb Bus 002 Device 003: ID 0fe9:9010 DVICO  (002/003)

      • RE: Softvérový reštart USB portu 12.05 | 13:22
        Avatar Pavel Linux Mint, Manjaro  Administrátor

        Ďakujem, vyskúšam keď budem u rodičov, ak to bude fungovať tak super :-)

        • RE: Softvérový reštart USB portu 12.05 | 13:25
          Avatar redhawk75 mx19, galliumos, antiX, Devuan,  Používateľ

          s tv kartou evolve mars to funguje. 

          treba skusit