abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
27.3. 17:00 | Zajímavý projekt
Na blogu Raspberry Pi jsou představeny dva zajímavé projekty: PiJuice a PiNet. PiJuice je modul s baterií, případně i se solárním panelem, pro mobilní projekty s Raspberry Pi. Končící kampaň na Kickstarteru je velice úspěšná. Cílová částka 10 tisíc liber byla překonána hned sedmkrát. PiNet je řešení počítačové učebny postavené na Raspberry Pi. Nahrazuje starší řešení Raspi-LTSP.
Ladislav Hagara | Komentářů: 3
27.3. 09:09 | IT novinky
Pro společnost Red Hat skončil 28. února fiskální rok 2015. Dle finančních výsledků bylo čtvrté čtvrtletí, stejně jako celý fiskální rok 2015, opět úspěšné. Tržby jsou zvyšovány již 52 čtvrtletí v řadě. Za čtvrté čtvrtletí 2015 to bylo 464 milionu dolarů, tj. meziroční nárůst 16 %. Tržby za celý fiskální rok činily 1,79 miliardy dolarů, tj. meziroční nárůst 17 %.
Ladislav Hagara | Komentářů: 32
27.3. 09:09 | Zajímavý článek
Vyšlo šestačtyřicáté číslo anglicky psaného časopisu BlenderArt Magazine určeného uživatelům Blenderu. Stáhnout jej lze ve formátu pdf, nebo přečíst online na Issuu.
Ladislav Hagara | Komentářů: 0
26.3. 19:19 | Komunita
Mozilla.cz informuje, že GitHub začal pro prohlížení nahraných PDF dokumentů používat čtečku PDF z Firefoxu. Ta je shodou okolností pod názvem Pdf.js hostována právě na GitHubu.
Ladislav Hagara | Komentářů: 3
26.3. 19:19 | Zajímavý projekt
Článek na serveru Libre Graphics World Kimiko Ishizaka and MuseScore team release Open Well-Tempered Clavier představuje Otevřený Dobře temperovaný klavír (OpenWTC) uvolněný jako volné dílo. K dispozici je jak audio (MP3, FLAC), tak notový zápis (PDF, MusicXML, ...). Vše je k dispozici také na Wikimedii. Finančně pomohla úspěšná kampaň na Kickstarteru. V souvislosti s týmem MuseScore lze zmínit vydání MuseScore 2.0, nové verze svobodného notačního programu.
Ladislav Hagara | Komentářů: 32
25.3. 20:02 | Zajímavý projekt
Collabora a IceWarp budou spolupracovat s komunitou na vývoji LibreOffice Online (LOOL), svobodné alternativy k proprietárním řešením jako Dokumenty Google a Office 365 (Michael Meeks, Collabora, The Document Foundation Blog). LibreOffice Online byl představen již v roce 2011 (zprávička) a v roce 2012 se mluvilo o jeho vydání (zprávička). Dle aktuálních odpovědí na dotazy ohledně LibreOffice Online by LibreOffice Online mohl být k dispozici na přelomu let 2015 a 2016.
Ladislav Hagara | Komentářů: 14
25.3. 16:45 | Nová verze
Po půl roce od vydání verze 3.14 (zprávička) vychází GNOME 3.16. Součástí jsou nové funkce a vlastnosti, stejně jako řada menších zdokonalení a vylepšení. Vydání obsahuje 33 525 změn od 1 043 přispěvatelů. Podrobnosti i s náhledy v poznámkách k vydání, přehledu dalších funkcí nebo také v novinkách pro vývojáře, správce systémů a správce distribucí. Přehled novinek také na oficiálním videu. Pro vyzkoušení je k dispozici iso obraz gnome-3.16.iso.
Ladislav Hagara | Komentářů: 108
25.3. 09:30 | Komunita
Na dnešek, poslední středa v březnu, připadá Document Freedom Day (DFD) (Wikipedia), jenž má upozornit na výhody otevřených standardů a formátů. Kolik podpůrných akcí se koná v Česku a na Slovensku? Dle aktuální mapy akcí žádná.
Ladislav Hagara | Komentářů: 1
25.3. 09:30 | Zajímavý článek
Mozilla.cz informuje, že geolokační služba Mozilla Location Service, jež sbírá informace o umístění Wi-Fi sítí a buněk mobilních vysílačů, úspěšně roste, viz mapa pokrytí.
Ladislav Hagara | Komentářů: 5
24.3. 15:17 | Pozvánky
Setkání JBUG na téma Novinky v Infinispan 7 proběhne ve středu 8. 4. od 18:00 v místnosti A318 na Fakultě informatiky MU v Brně. Prezentují Tomáš Sýkora a Martin Genčúr.
Jan Bleha | Komentářů: 0
Disketu jsem naposledy použil během
 (36%)
 (3%)
 (12%)
 (45%)
 (3%)
Celkem 2555 hlasů
 Komentářů: 103, poslední dnes 00:33
Rozcestník
Reklama
Autoškola testy online Levný benzín

Oprava Yakumo QuickStick DVB-T pod linuxem

26.9.2010 14:26 | Přečteno: 1174× | Hardware | poslední úprava: 26.9.2010 18:16

Jak jste si možná někteří všimli, hledal jsem tu před pár dny pomoc ohledně svého chcíplého USB televizního adaptéru „Yakumo QuickStick DVB-T“. Na základě odpovědí v poradně, trochy googlování a kapky programování se mi podařilo zmíněný adaptér nakonec úspěšně přívést znovu k životu a to sice bez použití Windows. Zde je návod, co s tím.

Problém

Začněme s krátkým popisem toho, co se vlastně adaptéru stalo. Zřejmě při jeho vytahováni z USB portu došlo k poškození dat na EEPROM. Těmito daty přitom jsou VID/PID (Vendor ID/Product ID) pod kterými se USB stick hlásí počítači. Konkrétně mně se VID/PID změnilo z 14aa:0225 ⇒ 14ee:0225 (čili se nastavili - což se de fakto rovná u EEPROM vynulování - dva bity jednoho bajtu). Důsledek: OS nenašel k adaptéru správný ovladač a nic se tedy nedělo.

Řešení

Na řešení mě navedli diskutující v poradně, kteří mě odkázali na tento blog. Řešení spočívalo v tom, využít pod Windows speciální vývojové prostředí pro platformu, na které je USB stick založen, pomocí ní do něj nahrát speciální firmware, které umožňuje manipulaci s EEPROM a potom přes toto vývojové prostředí ručně poslat příslušné USB příkazy.

Jelikož Windows momentálně nemám po ruce, rozhodl jsem se, že se pokusím o stejnou věc, ale čistěji a pod linuxem.

Co budeme potřebovat

K „odcihlení“ adaptéru budeme potřebovat a) onen speciální FW pro komunikaci s EEPROM, b) linuxový program, který jej do adaptéru nahraje, c) (náš) linuxový program, který bude s tímto FW komunikovat a pomocí něj korektně nastaví VID/PID v EEPROM adaptéru.

Ad a): Firmware se jmenuje Vend_Ax.hex a stáhneme jej například odtud.

Ad b): utilitka pro nahrání firmware se jmenuje cycfx2prog a najdeme ji této stránce. (Klasicky rozbalíme a skompilujeme pomocí 'make').

Ad c): Vytvoříme adresář a v něm vytvoříme soubor yakumo-repair.c s následujícím obsahem:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <usb.h>

void usage() {
  fprintf(stderr, "Usage: yakumo-repair <old_vid:old_pid> <new_vid:new_pid>\n");
  fprintf(stderr, "You have to download Vend_ax.hex (using e.g. cycfx2prog) first!\n");
  exit (-1);
}

unsigned int vid_o, pid_o, vid_n, pid_n;

void repair (struct usb_device *dev, usb_dev_handle *h) {
  unsigned char buffer[256], b2[256];
  int i,n,ok;

  n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                           0xa2, 0, 0, (char *)buffer, sizeof(buffer), 5000);

  printf ("EEPROM READ: [%d]\t", n);
  if (n) for (i=0; i<n; i++)
  {
    printf(" %02x", buffer[i]);
  }
  printf ("\n");

  if (n!=256)
  {
    fprintf (stderr, "Error reading EEPROM!\n");
    return;
  }

  if (
      (buffer[1]==(vid_o%0x100)) &&
      (buffer[2]==(vid_o/0x100)) &&
      (buffer[3]==(pid_o%0x100)) &&
      (buffer[4]==(pid_o/0x100)) 
     )
  {
    printf ("... old VID/PID OK! Trying to overwrite VID/PID in EEPROM...\n");

    // set new VID/PID into the buffer!
    buffer[0]=0xc0;
    buffer[1]=(vid_n%0x100);
    buffer[2]=(vid_n/0x100);
    buffer[3]=(pid_n%0x100);
    buffer[4]=(pid_n/0x100);

    n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT,
                           0xa2, 0, 0, (char *)buffer, 5, 5000);

    printf ("... written %d bytes...\n", n);

    printf ("Verifying...\n");

    n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                           0xa2, 0, 0, (char *)b2, sizeof(b2), 5000);

    if (n!=256) 
    {
      fprintf (stderr, "Error reading EEPROM!\n");
      return;
    }

    ok=1;
    for (i=0; i<n; i++)
      if (buffer[i]!=b2[i]) ok=0;

    printf (ok?"Verified, OK!\n":"Error occured!\n");

  }
  else
    fprintf (stderr, "VID/PID in EEPROM don't match! Skipping...");


}


int main (int argc, char **argv) {

  struct usb_bus      *bus;
  struct usb_device   *dev;
  usb_dev_handle      *handle = NULL;

  if (argc!=3) usage();

  sscanf(argv[1], "%x:%x", &vid_o, &pid_o);
  sscanf(argv[2], "%x:%x", &vid_n, &pid_n);

  if ((vid_o>0xffff) || (pid_o>0xffff) || (vid_n>0xffff) || (pid_n>0xffff)) usage();

  printf ("\nRepairing: [%04x:%04x] => [%04x:%04x]\n\n", vid_o, pid_o, vid_n, pid_n);


  usb_init();
  usb_find_busses();
  usb_find_devices();
  for (bus=usb_get_busses(); bus; bus=bus->next)
  {
    for (dev=bus->devices; dev; dev=dev->next)
    {
      if ((dev->descriptor.idVendor==vid_o) && (dev->descriptor.idProduct==pid_o))
      {
        handle=usb_open(dev);
        if (!handle)
          printf("Error opening [%04x:%04x]!\n", vid_o, pid_o); 
        else
        {
          printf("Found [%04x:%04x]: trying to repair ----------------\n", vid_o, pid_o); 
          repair(dev, handle);
        }
      }
    }
  }


  return 0;
 }

V adresáři rovněž vytvoříme soubor Makefile a do něj dáme:

BIN=/usr/bin

USBFLAGS = `libusb-config --cflags`
USBLIBS = `libusb-config --libs`

CC		= gcc
CFLAGS	= $(USBFLAGS) -O3 -Wall
LIBS	= $(USBLIBS)

PROGRAM=yakumo-repair

all: $(PROGRAM)

.c.o:
	$(CC) $(CFLAGS) -c $<

$(PROGRAM): $(PROGRAM).o
	$(CC) -o $(PROGRAM) $(PROGRAM).o $(LIBS)

strip: $(PROGRAM)
	strip $(PROGRAM)

install: strip
	cp -f $(PROGRAM) $(BIN)

clean:
	rm -f *.o $(PROGRAM)
Program zkompilujeme pomocí 'make'.

Jak na to?

Nejprve nahrajeme do adaptéru firmware pro práci s EEPROM (nyní spouštíme vše pod rootem!):
./cycfx2prog -id=14ee:0225 prg:Vend_ax.hex run
Program vypíše něco jako:
Using ID 14ee:0226 on 001.014.
Putting 8051 into reset.
Programming 8051 using "Vend_ax.hex".
Putting 8051 out of reset.
Poté spustíme náš program se dvěma parametry: prvním je současný (nekorektní) pár VID/PID, druhým je opravený VID/PID:
./yakumo-repair 14ee:0225 14aa:0225
Program vypíše:
Repairing: [14ee:0225] => [14aa:0225]

Found [14ee:0225]: trying to repair ----------------
EEPROM READ: [256]	 c0 ee 14 25 02 00 00 08 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
... old VID/PID OK! Trying to overwrite VID/PID in EEPROM...
... written 5 bytes...
Verifying...
Verified, OK!
Což znamená, že v tomto okamžiku by mělo být vše v pořádku, stačí adaptér odpojit a znovu zapojit a měl by znovu fungovat.        

Hodnocení: 89 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

26.9.2010 14:31 pc2005 | skóre: 30 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Oprava Yakumo QuickStick DVB-T pod linuxem
Wow tomu říkám podpora hardwaru, vývojové prostředí :-O. U některých hw by šlo tak maximálně změnit USB ID ve zdrojáku kernelu :-D.
帮帮我,我被锁在中国房 | Texaské nástroje, Národní polovodiče
Jendа avatar 26.9.2010 15:18 Jendа | skóre: 69 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Oprava Yakumo QuickStick DVB-T pod linuxem
Nebylo by jednodušší říct ovladači, aby používal i zařízení s tím rozhozeným ID?
Petr Tomášek avatar 26.9.2010 15:39 Petr Tomášek | skóre: 33 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Oprava Yakumo QuickStick DVB-T pod linuxem
Jo a při dalším upgrade systému to budu muset dělat znova, že? (Navíc chci, aby mi stick fungoval na vícero počítačích)
26.9.2010 15:30 pc2005 | skóre: 30 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Oprava Yakumo QuickStick DVB-T pod linuxem
Rofl on mě přišel i mail z konference LinuxTV :-D.
帮帮我,我被锁在中国房 | Texaské nástroje, Národní polovodiče
Petr Tomášek avatar 26.9.2010 16:50 Petr Tomášek | skóre: 33 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Oprava Yakumo QuickStick DVB-T pod linuxem
Předtím jsem se tam (byť bezúspěšně) ptal, tak mi přišlo slušné dát zprávu o tom, že jak jsem problém vyřešil...
Grunt avatar 26.9.2010 18:58 Grunt | skóre: 19 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Oprava Yakumo QuickStick DVB-T pod linuxem
No LOL teda. A to já si myslel, že snad i něco málo o odcihlení RDAA-81 pomocí JTAGu po těch peripetiích i napíšu, ale jak se dívám tak jsem pořád slabé máslo a ještě budu muset počkat na corovější zážitky.
Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!

Založit nové vláknoNahoru

ISSN 1214-1267   Powered by Hosting 90 Server hosting
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.