USBasp, bubuntu i udev

Kupiłem sobie ostatnio w nettigo zabawkę, czyli programator USBasp i jakieś kostki ATtiny 2313. Właściwie bez konkretnego planu, ot tak, żeby się pobawić dla zabicia czasu.
Wszystkiego bym się spodziewał, ale nie tego, że pół dnia będę kombinował jak to podpiąć do komputera (w sposób cywilizowany), a jeszcze nie wiem ile czasu zajmie mi podpięcie tego cuda do attiny. 😀 No to, żeby nie zapomnieć.

Kupiłem sobie ostatnio w nettigo zabawkę, czyli programator USBasp i jakieś kostki ATtiny 2313. Właściwie bez konkretnego planu, ot tak, żeby się pobawić dla zabicia czasu.
Wszystkiego bym się spodziewał, ale nie tego, że pół dnia będę kombinował jak to podpiąć do komputera (w sposób cywilizowany), a jeszcze nie wiem ile czasu zajmie mi podpięcie tego cuda do attiny. 😀 No to, żeby nie zapomnieć.

Problem sprowadza się do tego, że po podpięciu programatora, próba zaprogramowania (powietrza) kończy się dość popularnym jak się okazuje komunikatem:

wariat@lipa:~$ avrdude -p t2313 -c usbasp -v  empty2313at8.hex
(...)
         Using Port                    : /dev/parport0
         Using Programmer              : usbasp
avrdude: Warning: cannot query manufacturer for device: error sending control message: Operation not permitted
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

avrdude done.  Thank you.

I niby nic i żaden powód do tych kilku godzinnych poszukiwań (ok, w pracy między klientami, ale budujemy napięcie right? :D), gdyby nie to, że wszystko co udało mi się wygooglać to jakże odkrywcze rozwiązanie problemu: użyj sudo.
No nie, tak to się nie będziemy bawić. 😀

W każdym razie powyższe rozwiązanie działa, a to oznacza, że po prostu zwykły użyszkodnik nie ma praw do gadania z programatorem i trzeba to zmienić. Tylko tyle. Po kolei.

Jest sobie programator:

root@lipa:~# lsusb -s 002:007
Bus 002 Device 007: ID 16c0:05dc VOTI shared ID for use with libusb

i faktycznie gadać może do niego tylko root:

root@lipa:~# ls -l /dev/bus/usb/002/007
crw-rw-r-- 1 root root 189, 134 cze 19 12:05 /dev/bus/usb/002/007

Całe halo to dowiedzieć się z kim mamy do czynienia:

root@lipa:~# udevadm info -ap /sys/bus/usb/devices/2-1
(...)
 looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
    KERNEL=="2-1"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
(...)
    ATTR{authorized}=="1"
    ATTR{manufacturer}=="www.fischl.de"
    ATTR{product}=="USBasp"
(...)

I dopisać jedną regułkę udev:

root@lipa:~# cat /etc/udev/rules.d/99-usbasp.rules 
SUBSYSTEM=="usb", DRIVER=="usb", ATTR{manufacturer}=="www.fischl.de", ATTR{product}=="USBasp", GROUP="dialout"

Odłączyć, podłączyć i po robocie:

root@lipa:~# ls -l /dev/bus/usb/002/012
crw-rw-r-- 1 root dialout 189, 139 cze 19 12:43 /dev/bus/usb/002/012

Dlaczemu dialout? A bo arduino po zainstalowaniu kazało dodać usera do tej grupy, a że jedno i drugie leżało obok siebie to mimo, że grupa jak gdyby trochę od pały to w sumie czemu nie.
Teraz zostaje mi spięcie tego z ATtiny, to dopiero może być wyzwanie … dla mnie znaczy. 😀

Aktualizacja przez zmanę nazwy…

Przez jakiś czas dziwiłem się dlaczego tu i tam opowiadają o OO.o-3.3, a tu mi się nic nie buntuje. Dziś mnie olśniło, żeby sprawdzić i aktualizacja się znalazła.

#  eix -c "(libre|open)office$" 
[N] app-office/libreoffice (3.3.1): LibreOffice, a full office productivity suite.
[I] app-office/openoffice (3.2.1-r1@21.04.2011): OpenOffice.org, a full office productivity suite.
Found 2 matches.

A najbardziej wkurza mnie to, że ja tę kobyłę kompiluję (tu w pracy przez +16h) tylko dlatego, że wersja binarna ma jakiś dupny windziany fileselector zakorzeniony w latach 80tych zeszłego wieku.

Psuje atakują … permanentnie :D

Szedłem sobie spać, zamykam terminale i co widzę? Jakiś nowy sposób wywracania ludziom ludziom daemona ssh?

/var/log/sshd/current
Apr 21 23:23:45 [sshd] SSH: Server;Ltype: Version;Remote: 119.145.255.146-41652;Protocol: 2.0;Client: libssh-0.1
Apr 21 23:23:47 [sshd] SSH: Server;Ltype: Version;Remote: 119.145.255.146-41837;Protocol: 2.0;Client: libssh-0.1
Apr 21 23:23:50 [sshd] SSH: Server;Ltype: Version;Remote: 119.145.255.146-42020;Protocol: 2.0;Client: libssh-0.1
Apr 21 23:23:53 [sshd] SSH: Server;Ltype: Version;Remote: 119.145.255.146-42193;Protocol: 2.0;Client: libssh-0.1

W każdym razie denyhosts się nie pokapował, że coś się dzieje. A sam sposób wydaje się nie działać. Ale jak ten sam burak zaczął próbować to czego zwykle próbują …

/var/log/sshd/current
Apr 21 23:23:58 [sshd] SSH: Server;Ltype: Version;Remote: 119.145.255.146-42573;Protocol: 2.0;Client: libssh-0.1
Apr 21 23:24:00 [sshd] Invalid user shoutcast from 119.145.255.146
Apr 21 23:24:01 [sshd] SSH: Server;Ltype: Version;Remote: 119.145.255.146-42739;Protocol: 2.0;Client: libssh-0.1
Apr 21 23:24:02 [sshd] Invalid user stephanie from 119.145.255.146

to się w końcu połapał 😉

/var/log/sshd/current
Apr 21 23:24:30 [sshd] SSH: Server;Ltype: Version;Remote: 119.145.255.146-44837;Protocol: 2.0;Client: libssh-0.1
Apr 21 23:24:32 [sshd] Invalid user web from 119.145.255.146
Apr 21 23:24:33 [sshd] refused connect from 119.145.255.146 (119.145.255.146)

Linuksy administracja i ranty…

Nie tak dawno po serwisach newsowych w jakiś sposób związanych z FLOSS przetoczyły się informacje o tym, że administracja w szkoplandii po udanej migracji na wolne oprogramowanie właśnie przytłoczona jakimiś bliżej nie zidentyfikowanymi problemami migruje z powrotem na oprogramowanie własnościowe.

Nie tak dawno po serwisach newsowych w jakiś sposób związanych z FLOSS przetoczyły się informacje o tym, że administracja w szkoplandii po udanej migracji na wolne oprogramowanie właśnie przytłoczona jakimiś bliżej nie zidentyfikowanymi problemami migruje z powrotem na oprogramowanie własnościowe.

Z tej okazji zdenerwowany MacSlow (i zapewne gazylion innych ale tego akurat przyuważyłem) wysmażył na blogu rant German foreign office goes back to Windows – rant. Gdzie między innymi:

From reading summaries on the real reasons, it apparently came down to drivers (for printers and scanners), which they probably bought at Lidl or Aldi (german discount-chains), instead of spending a minute or two on the web researching what devices are properly supported.

A ponieważ akurat mniej więcej w tym czasie zdechł u mnie w firmie wysłużony fax od Panasonica mam garść własnych doświadczeń.

Fax jest konieczny do pracy, ale drukarka też by się przydała. No to może żeby nie marnować miejsca jakiś mały wielofunkcyjny kombajnik? Nie jestem administracja publiczna tylko normalny ZU 2.0 myślę, że sobie poradzę.
Na stronie HP odnajduję urządzenie z zadowalającymi parametrami i rozsądną ceną: HP LaserJet Pro M1212nf. Obsługiwane OS?

Windows® 7; Windows Vista®; Microsoft® Windows® XP, Server 2003, Server 2008; Mac OS X v10.4, v10.5, v10.6; Linux (patrz http://www.hplip.net). W systemach Microsoft® Windows® Server 2003 i Server 2008 można dodać tylko sterowniki druku i skanowania.

jest ok, ale sprawdzamy dalej na stronie hplip: hplip: HP LaserJet Professional m1212nf Multifunction Printer.

Minimum HPLIP version: 3.10.4
Support level: Full (See note11.)
Recommended?: Yes (See note15.)

This printer REQUIRES a downloadable driver plug-in. Use hp-setup to install the printer, and to download and install the plug-in. In general, required driver plugins are required for printing support. Driver plug-ins are released under a proprietary (non-open) license and are not part of the HPLIP tarball release.

11) For a definition of Support Levels, please refer to this KB article.
15) „Recommended” means that the printer is fully supported in HPLIP and is recommended for use on your Linux system. For information of what „fully supported” means, see this KB article.

Nadal ok, ale jakiś plugin, lista wspieranych dystrybucji… Ok nie chcemy się wpierdzielić jak jakiś lamer z niemieckiej administracji trzeba dopytać.

Launchpad HPLIP: Is the HP LJ Pro M1212nf supported?

Gdzie ostatecznie zostaję upewniony, że zadziała i nie powinienem wydziwiać.

No to kupiłem drukarkę. Chwilę to trwało zanim zadziałała bo się ten durny plugin nie chciał zainstalować, pewnie coś robiłem źle. Anyway drukarka zainstalowana, skaner działa (jeden i drugi), drukarka działa, faksowanie z komputera się zainstalowało (nie testowałem więc nie napiszę tu, że działa ale wierzę, że tak). Oczywiście powyższe nie wskazuje na powód dla którego dziś tu spamuję… 😉

Głównym zadaniem urządzenia jest bycie faksem. To jedyna rzecz której od niego oczekuję na co dzień to żeby odebrał fax jeśli ktoś do niego zadzwoni i żebym ja mógł odebrać fax dla siebie. I tu małe wyjaśnienie. Odebrać fax czyli ja dzwonię do kogoś, mówię cześć to ja prześlij mi dokument, ktoś wysyła ja odbieram. To się bodaj polling nazywa i tak jest obsługiwane przez HP M1212nfgoogle: m1212nf polling

I tu zaczęły się schody …

Procedura z mojej strony jest zawsze taka sama, linia telefoniczna jak to linia też się raczej nie zmienia codziennie. Na dodatek po drugiej stronie połączenia jest cały czas to samo jedno urządzenie. Połączenie wygląda następująco:

  1. wybieram numer faksu z podłączonego do linii (via fax) telefonu, po nawiązaniu połączenia proszę o wysłanie faksu
  2. Naciskam przycisk odbioru faksu na drukarce
  3. Odbieram fax … lub nie

Rozmawiamy o prostym urządzeniu dla normalnych ludzi i technologii istniejącej już dobrze 20 lat, a pewnie więcej. Efekt powyżej opisanej procedury jest taki, że w większości przypadków działa, po naciśnięciu przycisku faksu słychać przeskakujący przekaźnik (fax podnosi słuchawkę) i po chwili urządzenia zaczynają negocjować połączenie. Ale czasami ta sama procedura daje taki efekt, że po naciśnięciu przycisku faxu na wyświetlaczu drukarki pojawia się pytanie Wysłać z szyby? i d*.*. Można sobie klikać w kółko wróć i znów zielony przycisk faxu, nic nie daje. Jak się małpa uprze to nic jej nie przekona.

Wygląda to wszystko tak jak gdyby drukarka HP próbowała zgadnąć co chciałby zrobić użyszkodnik ale słabo jej to zgadywanie wychodzi. No to wziąłem się za siebie i napisałem do supportu.
Od jakiegoś czasu sobie z tym supportem korespondujemy. Dostałem masę mało sensownych porad, kilka próśb o wykonanie testów (w tym próby wysłania faksu na numer w HP Polska – tak jak gdybym kiedykolwiek uważał, że mam kłopot z wysyłaniem dokumentów). Generalnie z tej całej korespondencji nic nie wynika, poza ostatnim wnioskiem z przed kilku dni. Być może konieczna jest aktualizacja firmware. Można ją wykonać samemu … z komputera z zainstalowanym Windows. Z urządzenia z linuskiem się nie da.

I tak to jest z linuksem w firmie, nawet jeśli nie ma się drukarek z Lidla kupionych bez zastanowienia.

Ile kosztują windowsy … teraz?

Jakiś czas temu przy okazji zakupu pierwszego eeeBoxa sprawdzałem ile kosztuje windows XP. Przy drugim i trzecim eeeBoxie zabrakło czasu/weny tfórczej poza tym przecież już wiedziałem to nie było co sprawdzać. Ale gwiazdor przyniósł Nelce eeePC 1008P przyniósł trochę przed czasem, ale gwiazdory nękane przez tatów hackerów tak mają ;-). Netbook miał tą razą preinstalowane coś co nazywa się Windows 7 starter edition, na windowsach się nie znam ale rozumiem, że jest to do bólu wykastrowana wersja windows 7.

Jakiś czas temu przy okazji zakupu pierwszego eeeBoxa sprawdzałem ile kosztuje windows XP. Przy drugim i trzecim eeeBoxie zabrakło czasu/weny tfórczej poza tym przecież już wiedziałem to nie było co sprawdzać. Ale gwiazdor przyniósł Nelce eeePC 1008P przyniósł trochę przed czasem, ale gwiazdory nękane przez tatów hackerów tak mają ;-). Netbook miał tą razą preinstalowane coś co nazywa się Windows 7 starter edition, na windowsach się nie znam ale rozumiem, że jest to do bólu wykastrowana wersja windows 7.

Różnica na którą warto zwrócić uwagę jest taka, że kiedy kupowałem do firmy eeeBoxy to windows XP był już stary i właściwie na wylocie. Teraz windows 7 to właściwie nowość, co powoduje, że cena jest mniej dumpingowa, choć nadal odstaje od wyobrażeń o wartości płytki instalacyjnej.

Nie trzymając dłużej w napięciu (ktoś czuje jakieś napięcie? :D) spieszę donieść, że Windows 7 starter edition Microsoft wycenił na 20€ co na nasze dało 78,68PLN.

Procedura zwrotu w Asus nadal działa, złego słowa powiedzieć nie mogę. Trochę to wszystko trwa, ale to z mojego punktu widzenia akurat najmniejszy problem. Jeśli ktoś chciałby rady jak się za to zabrać to może tylko wspomnę, że po zapytaniu emailem człowieka w supporcie Asusa o dokumenty zwrotu (e-mail miałem z powodu poprzednich kontaktów) zostałem zastrzelony pytaniem „jaki jest numer seryjny i kiedy kupiłem komputer” na co szczerze odpowiedziałem, że numeru seryjnego nie ma bo właśnie planuję zakup. To o tyle ważne, że oficjalnie, procedurę zwrotu systemu można uruchomić tylko w ciągu dwóch tygodni od zakupu. Oficjalnie, bo po drugiej stronie są ludzie z krwi i kości i na prawdę w żaden sposób nie próbują utrudniać. Zresztą niby po co, z punktu widzenia Asusa to przecież żadna różnica. A zadowolony z obsługi klient wraca i kupuje znowu (powiedział człowiek, który ma na swoim koncie trzy eeeBoxy i eeePC wszystkie obecnie Gentoo powered (Dzięki Smoku, że mi kiedyś Gentoo pokazałeś. Nic innego nie będzie mi potrzebne tak długo jak żęŧu będzie istniało.) oraz w planach dużego laptopa dla siebie*).

* z dużym laptopem jest kłopot, bo jakem wariat kompletnie gubię się w gazylionie proponowanych modeli i kompletnie nie wiem co bym chciał, a oczywiście wyklikanie przyzwoitej szukajki pozwalającej przefiltrowac ofertę przerosło możliwości sprzedawcy. No niema i już. Ale jak mnie przyciśnie to pewnie się przemogę i dam radę. Może jakiś order od Asusa dostanę przy okazji 😉

sensorki – jak?

Drogi LazyWeb 😀

Doświadczenie z sensorkami mam żadne, niby to co potrzeba do szczęścia (temperatura CPU) jest łatwo wykrywalne, ale męczy mnie sama świadomość, że jest tam (w Asus eeeBox B202) tych sensorów sterta, a ja nie mam pojęcia co pokazują.
Czy jest jakiś ogólny sposób, procedura postępowania pozwalająca zorientować się co z tego co jest udostępnione przez kostkę działa oraz co pokazuje? Do dyspozycji jest:

# for i in /sys/class/hwmon/hwmon0/device/*_input; do echo -n $i": "; cat $i; done

/sys/class/hwmon/hwmon0/device/fan1_input: 0
/sys/class/hwmon/hwmon0/device/fan2_input: 2812
/sys/class/hwmon/hwmon0/device/fan3_input: 0
/sys/class/hwmon/hwmon0/device/fan4_input: 0
/sys/class/hwmon/hwmon0/device/fan5_input: 0
/sys/class/hwmon/hwmon0/device/in0_input: 1192
/sys/class/hwmon/hwmon0/device/in1_input: 1680
/sys/class/hwmon/hwmon0/device/in2_input: 3296
/sys/class/hwmon/hwmon0/device/in3_input: 3280
/sys/class/hwmon/hwmon0/device/in4_input: 1664
/sys/class/hwmon/hwmon0/device/in5_input: 1704
/sys/class/hwmon/hwmon0/device/in6_input: 1664
/sys/class/hwmon/hwmon0/device/in7_input: 3296
/sys/class/hwmon/hwmon0/device/in8_input: 3232
/sys/class/hwmon/hwmon0/device/temp1_input: 42000
/sys/class/hwmon/hwmon0/device/temp2_input: 46500
/sys/class/hwmon/hwmon0/device/temp3_input: -13000

Co wiem choć nie na pewno to że:

  • fan2: wiatrak na CPU
  • temp1: temperatura MB
  • temp2: temperatura CPU

ale co z resztą? Any ideas?

Gentoo minimal USBstick

Gdzieś niejako przy okazji sypnąłem się, że mam na pędraku Gentoo minimal CD, a podobno się nie da, bo to nie działa – a ja nie wiedziałem, że nie działa to mi zadziałało :D. Ludzie (dwa ludzie, ale zawsze) pytają, więc mimo iż większego czary mary tu nie ma (mniejszego też), to przy okazji przygotowywania pędraka od nowa (tak, żeby Windows montował właściwą partycję) małe howto.

Gdzieś niejako przy okazji sypnąłem się, że mam na pędraku Gentoo minimal CD, a podobno się nie da, bo to nie działa – a ja nie wiedziałem, że nie działa to mi zadziałało :D. Ludzie (dwa ludzie, ale zawsze) pytają, więc mimo iż większego czary mary tu nie ma (mniejszego też), to przy okazji przygotowywania pędraka od nowa (tak, żeby Windows montował właściwą partycję) małe howto.

Najsamprzód przygotujemy pędraka. Dwie partycje, /dev/sda1 partycja FAT32 będzie pędrakiem właściwym, /dev/sda2 FAT16 (choć nie koniecznie) to bootowalna partycja z LiveCD. Na te drugą rezerwuję 350MB zmieści się na niej wtedy dodatkowo stage3 i snapshot portage i jeszcze jakieś miejsce zostanie.

# fdisk -l /dev/sda

Disk /dev/sda: 2063 MB, 2063597056 bytes
255 heads, 63 sectors/track, 250 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00042b5b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         205     1646631    b  W95 FAT32
/dev/sda2   *         206         250      361462+   6  FAT16

Partycje trzeba sformatować, pierwszą FAT32 lub NTFS jak kto woli, to będzie „pędrak właściwy”.

# mkdosfs -v -n PQI -F 32 /dev/sda1 
mkdosfs 3.0.2 (28 Feb 2009)
/dev/sda1 has 255 heads and 63 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 3293262 sectors;
file system has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 3210 sectors, and provides 410851 clusters.
Volume ID is 7b81d1e6, volume label PQI        .

Drugą FAT16 (lub ext2), na której znajdzie się instalka żętoo.

# mkdosfs -v -n Gentoo -F 16 /dev/sda2 
mkdosfs 3.0.2 (28 Feb 2009)
/dev/sda2 has 255 heads and 63 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 722924 sectors;
file system has 2 16-bit FATs and 16 sectors per cluster.
FAT size is 177 sectors, and provides 45158 clusters.
Root directory contains 512 slots.
Volume ID is 7d877c27, volume label Gentoo     .
# df -h | grep sda
/dev/sda2             353M     0  353M   0% /media/Gentoo
/dev/sda1             1,6G  4,0K  1,6G   1% /media/PQI

W szeroko rozumianym międzyczasie warto pobrać Gentoo MinimalCD i zainstalować Syslinux.

Dalej jest już, że tak powiem dość mechanicznie (mówiłem przecież, że żadnego czary mary tu nie ma).

  1. Kopiujemy MBR na pędraka:
    # dd if=/usr/share/syslinux/mbr.bin of=/dev/sda
    0+1 przeczytanych recordów
    0+1 zapisanych recordów
    skopiowane 440 bajtów (440 B), 0,00394937 s, 111 kB/s
    
  2. Montujemy gdzieś obraz płyty CD i partycję /dev/sda2 pędraka i kopiujemy zawartość jednego na drugie:
    # mount -t iso9660 -o loop,ro /home/wariat/Download/install-x86-minimal-20090915.iso /mnt/cdrom/
    # mount -t vfat /dev/sda2 /mnt/pen/
    # cp -r /mnt/cdrom/* /mnt/pen/
    # sync
    
  3. Trzeba jeszcze zmienić nazwy katalogu i pliku isolinux na syslinux (oraz ewentualnie skopiować wspomniany snapshoot i stage3):
    # mv /mnt/pen/isolinux/isolinux.cfg /mnt/pen/isolinux/syslinux.cfg
    # mv /mnt/pen/isolinux /mnt/pen/syslinux
    # mkdir /mnt/pen/pliki
    # cp /home/wariat/Download/gentoo\ x86/stage3-i686-20090915.tar.bz2 /mnt/pen/pliki/
    # cp /home/wariat/Download/gentoo\ x86/portage-20091008.tar.bz2 /mnt/pen/pliki/
    # sync
    
  4. Zostaje odmontować gwizdek i uruchomić syslinux:
    # umount /mnt/pen/
    # syslinux /dev/sda2
    

Gdyby zamiast FAT16 na tej partycji miał znaleźć się ext2 to wszystko jak wyżej, tylko wszędzie gdzie syslinux trzeba napisać extlinux i też działa.
No i tym razem ułomy windows, który potrafi zamontować tylko pierwszą partycję z napędu USB (LOL) pozwoli korzystać z gwizdka normalnie.
.

Ile kosztują windowsy?

Po latach pracy trzeba zacząć zwalniać stare, wysłużone komputery. Nic na gwałt, sztuka po sztuce jak się będzie sprawdzało. Docelowo część najstarszych (DOSowych) stanowisk ląduje na mini komputerkach Asus eeeBox B202 z gentoo linux w środku.

Przy tej okazji chciałem na własnej skórze przetestować jak to jest ze zwrotem windows OEM i czy to faktycznie zawsze jest droga przez mękę, tak jak można czasem przeczytać w sieci. Okazało się, że nie. Procedura działa powoli, ale bez większych problemów, zonk jest gdzie indziej o czym za chwilę.

Zacząłem od telefonu do supportu Asusa, gdzie dowiedziałem się, że tak, nie ma problemu tzreba wypełnić dokumenty i proszą o kontakt emailem, bo będzie łatwiej. Wiadomość wysłałem, odpowiedź przyszła po godzinie (miło prawda?).
Procedura jest prosta:

  1. Wypełnić dokumenty (przesłane w załączniku)
  2. Nakleić na nie naklejkę licencyjną windowsów
  3. Odesłać na podany adres wraz z kopią FV i płytą windows recovery
  4. czekać

Warto zaznaczyć, że należy się spieszyć i uruchomić całą procedurę najpóźniej tydzień po zakupie urządzenia. To jedyny kruczek (jeśli pominąć wojnę z odklejaniem naklejki :D).

A gdzie zonk? Zonk w odpowiedzi na pytanie ile kosztuje windows XP dołączony do Asusa eeeBox, poniżej kopia przelewu:

Tak właśnie, otóż wychodzi, że Microsoft życzy sobie za tę kopię windowsów 7€ (słownie: siedem euro!), i jak tu walczyć cenowo z taką konkurencją? 😀

Plan zakładał, że mimo wszystko wystąpię o zwrot za każdym razem, po prostu dlatego, żeby gdzieś tam w statystykach Asusa pojawiła się informacja, że na komputery bez windowsa naprawdę jest zapotrzebowanie. Ale wakacje, inne zajęcia, etc. i sprawę olałem. Na razie pracują dwa komputerki, być może pojawią się kolejne dwa, bo maszynka sprawdza się świetnie i do zastosowań biurowych z czystym sumieniem mogę polecić.
Przy okazji zaznaczę, że 100% sprzętu działa poprawnie bez jakichkolwiek zewnętrznych modułów jajka, wszystko co ma działać jest u pingwina „w standardzie”.

FreeDOS: CDR i codzienne backupy

Powoli zbliżam się do momentu kiedy stary Pentium 60 z FreeDOSem zostanie wysłany na emeryturę, a zastąpi go nowy Asus eeeBox B202 z gentoo linux. Martwiłem się kwestią przetransportowania danych ze staruszka, ale okazuje się, że autorzy FreeDOS stanęli na wysokości zadania i mimo iż system wygląda klasycznie (zabytkowo) to z obsługą nagrywarki CD nie ma większego problemu.

Powoli zbliżam się do momentu kiedy stary Pentium 60 z FreeDOSem zostanie wysłany na emeryturę, a zastąpi go nowy Asus eeeBox B202 z gentoo linux. Martwiłem się kwestią przetransportowania danych ze staruszka, ale okazuje się, że autorzy FreeDOS stanęli na wysokości zadania i mimo iż system wygląda klasycznie (zabytkowo) to z obsługą nagrywarki CD nie ma większego problemu.

Ku pamięci więc tylko:

  1. Plik ASPI.SYS do pobrania z: aspi.sys
  2. Ładujemy $ devlkoad aspi.sys
  3. Plik obrazu płyty: $ mkisofs -v -o image.iso batch\ kantor\
  4. $ cdrecord -scanbus
  5. $ cdrecord dev=0,0,0 -tao driveropts=burnfree image.iso

i tyle w temacie 😀

Przy okazji, jeśli gdzieś jeszcze taki zabytek stoi, a może sam jeszcze kiedyś postawię to, żeby nie klepać od nowa, codzienne backupy danych w całkiem zgrabnie uporządkowanej formie da się również w DOSie.

backup.bat
echo off
rem BWW Backup Script v3

set exclude=*.exe

cd %temp%

echo | date /d | sed -e "s/.* //" | sed -e "s/\./-/g"> data.txt
set /E date=sed data.txt -e "s/^.....//"
set /E year=sed data.txt -e "s/-..-..$//"

REM jesli nie ma katalogu na backupy to go zrobmy
IF EXIST D:\BACKUP\%year%\keep goto cont
  mkdir D:\BACKUP\%year%
  touch D:\BACKUP\%year%\keep
  mkdir E:\BACKUP\%year%
  touch E:\BACKUP\%year%\keep
  set exclude= 
  REM plik nie istnieje, czyli ok
:cont

set filename=%date%.zip
:loop
IF NOT EXIST D:\BACKUP\%year%\%filename% GOTO rest
  set exclude=
  set /E n=calc387 %n%+1
  echo %date%-%n%.zip > data.txt
  set /E filename=sed data.txt -e 's/ *//g'

  GOTO loop
:rest
rm data.txt

cdd c:\kantor\bww
zip -r -0 D:\BACKUP\%year%\%filename% *.* -x %exclude% 
copy D:\BACKUP\%year%\%filename% e:\backup\%year%\*.*

cd \

Skrypt uruchamiany z autoexec.bat zapisuje archiwum na partycji D:\ (i E:\ a co tam :D) w drzewie katalogów:

D:\
    BACKUP\
        yyyy\
        2008\
        2009\
            mm-dd.zip
            01-02.zip
            01-03.zip

I kto mówił, że w DOSie się nie da? 🙂

Który serial jest który?

Problem: stoi sobie komputer i ma wpięte dwa adaptery USBRS232C, do których dalej podpięte są dwa różne urządzenia. Urządzeń rozpoznać się nie da bo do nich się tylko rozmawia z zawrotną prędkością 300 bps. Ale rozmawia się do nich o czymś innym. Trzeba mieć pewność, że rozmawia się do właściwego, bo inaczej nie funguje.
Wodzu zgodnie z zasadami proponował podłączyć, zostawić i założyć, że zawsze porty po odpaleniu kompa pojawią się w tych samych miejscach. To dobre rozwiązanie bo nie trzeba nic robić, a jest duża szansa, że po prostu zadziała. Ale da się lepiej.

Problem: stoi sobie komputer i ma wpięte dwa adaptery USBRS232C, do których dalej podpięte są dwa różne urządzenia. Urządzeń rozpoznać się nie da bo do nich się tylko rozmawia z zawrotną prędkością 300 bps. Ale rozmawia się do nich o czymś innym. Trzeba mieć pewność, że rozmawia się do właściwego, bo inaczej nie funguje.
Wodzu zgodnie z zasadami proponował podłączyć, zostawić i założyć, że zawsze porty po odpaleniu kompa pojawią się w tych samych miejscach. To dobre rozwiązanie bo nie trzeba nic robić, a jest duża szansa, że po prostu zadziała. Ale da się lepiej.

Za utworzenie pliku urządzenia odpowiada niejaki UDEV, który robi wiele rzeczy często zahaczających o czary, przez co wariaty się go boją, okazuje się, że chyba nie potrzebnie.
Wtyczki oczywiście zostają wpięte raz na stałe, więc o ile najbardziej chińskie z chińskich adapterów USBRS232 Bus 001 Device 034: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port same w sobie są również nie do rozpoznania, o tyle gniazdko gdzie są wetknięte już owszem. W moim przypadku ona wylądowały w dwóch pierwszych złączach podpiętego do eeeBoxa huba USB.

Cała magia sprowadza się do:

udevadm info -ap /sys/class/tty/ttyUSB0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2.1/1-2.1:1.0/ttyUSB0/tty/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2.1/1-2.1:1.0/ttyUSB0':
    KERNELS=="ttyUSB0"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="pl2303"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2.1/1-2.1:1.0':
    KERNELS=="1-2.1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="pl2303"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{modalias}=="usb:v067Bp2303d0300dc00dsc00dp00icFFisc00ip00"
    ATTRS{supports_autosuspend}=="1"
(...)

gdzie w pierwszej sekcji interesuje nas: KERNEL==”ttyUSB0″, w drugiej nic, a w trzeciej KERNELS==”1-2.1:1.0″

Powstaje więc regułka (gwiazdka zastępuje numer portu!!!):

/etc/udev/rules.d/00-ttyUSB.rules

KERNEL=="ttyUSB*", KERNELS=="1-2.1:1.0", NAME="ttyTABLICA"

tak samo z drugim adapterem i … no i po prostu działa:

yogi ~ # cat /etc/udev/rules.d/00-ttyUSB.rules 

KERNEL=="ttyUSB*", KERNELS=="1-2.1:1.0", NAME="ttyTABLICA"
KERNEL=="ttyUSB*", KERNELS=="1-2.2:1.0", NAME="ttyWYSWIETLACZ"

yogi ~ # ls -l /dev/tty* | grep 23:
crw-rw---- 1 root uucp 188,  0 07-15 23:49 /dev/ttyTABLICA
crw-rw---- 1 root uucp 188,  1 07-15 23:50 /dev/ttyWYSWIETLACZ

Okazuje się, że nie taki UDEV straszny jak sobie wariat wyobrażał, a przy okazji bonus bo nie trzeba nawet pamiętać co było wpięte jako ttyUSB0 bo widać po nazwie urządzenia.