Czy rozmiar ma znaczenie?

W tym przypadku prawo nagłówków Betteridge’a nie ma zastosowania, odpowiedź będzie twierdząca, a wszystko za sprawą Androida.

Logo Androida
Źródło: https://en.wikipedia.org/wiki/Android_(operating_system)

Od roku korzystam z Yanosika. Jakiś czas temu zauważyłem, że niemal skończyło mi się miejsce na karcie SD. Szybkie śledztwo ujawniło, że głównym winowajcą nie są – jak przypuszczałem – zdjęcia, tylko katalog yanosik-new, który zajmował ponad 700 MB z dostępnych 2 GB na karcie (wiem, mała, taka zaszłość). Ponarzekałem na FB, usłyszałem, że zawartość katalogu można bezpiecznie usunąć – odbuduje sobie co potrzebne. Znaczy się klasyczny cache. OK, rok używany, karta mała, nie robię afery. Usunąłem.

Ostatnimi dniami coś Yanosik zaczął zgłaszać błędy w stylu aplikacja nie odpowiada – czekaj/zgłoś/zamknij. Coś mnie tknęło, żeby znowu sprawdzić zajętość karty i… bingo. Znowu brak wolnego miejsca. Co prawda zrobiłem na urlopie parę zdjęć, ale zdecydowanie nie kilkaset MB. Oczywiście znowu yanosik-new ma rozmiar ponad 700 MB… Zacząłem szukać większej karty i rozglądać się za instrukcją zmiany karty w telefonie na większą. Przy okazji obmyślając, jakich ciepłych słów użyć pod adresem autorów Yanosika, bo zużycie 700 MB w rok to jeszcze jestem jakoś w stanie zrozumieć, ale w 3 tygodnie?

Znalazłem jakąś kartę 4 GB, ale okazało się, że muszę sprawdzić, czy jest sprawna. Wymiana karty SD w urządzeniach z Androidem jest prosta – wystarczy zgrać całą zawartość na komputer, sformatować nową kartę, przegrać wszystkie dane na nową. I powinno działać. Wygląda prosto, ale stwierdziłem, że zrobię backup, poza tym i tak wygodniej wrzucić całość na chwilę na komputer, niż kopiować między czytnikami.

I tu niespodzianka. Po usunięciu miniaturek zdjęć (jakieś 200 czy 300 MB) i skopiowaniu wszystkich danych na dysku katalog zajął… 880 MB.  Czyli jakąś połowę tego, co na karcie. W tym momencie zapaliła mi się lampka ostrzegawcza. Czyżby rozmiar bloku? Katalog Yanosika ma dużo małych kilkusetbajtowych plików, więc może o to chodzi. Sprawdziłem jego rozmiar w komputerze. 130 MB, więc bez dramatu. Czyżby autorzy zrobili taki bezsensowny i niedostosowany do Androida cache?

Zacząłem drążyć temat i okazało się, że cfdisk pokazuje jako system plików FAT16. No ale jak to? I jaki jest rozmiar bloku dla FAT 16? I czy w ogóle pojemności rzędu 2 GB są obsługiwane przez taki zabytek? Szybka wyprawa do muzeum i okazało się, że owszem, FAT16 obsługuje pojemności dysku do 2 GB. A rozmiar bloku to wówczas… 32 kB. Zamiast wymieniać kartę, postanowiłem zrobić mały eksperyment: zmienić system plików na FAT32.

Zmieniłem typ partycji w cfdisk (raczej bez znaczenia) i sformatowałem kartę przy pomocy mkfs.vfat -F 32, czyli wymuszając FAT32. Skopiowałem dane z komputera, włączyłem telefon, odbudowałem cache zdjęć. Po tym zabiegu jest 930 GB wolnego, bez kasowania jakichkolwiek danych! Czyli rozmiar bloku ma w przypadku urządzeń z Androidem duże znaczenie.

Zastanawiam się tylko, jak to możliwe. Kto w XXI w. używa FAT16? Nie kojarzę gdzie była formatowana karta. Wiele wskazuje na to, że w samym telefonie. Czyżby Android był tak słabo zaprojektowany, że domyślnie formatuje karty o rozmiarze 2 GB i mniejsze na FAT16? Jeśli tak, to jak widać zupełnie bez sensu. Ciekawe też, jaki system plików jest w na wbudowanej pamięci flash. Bo o ile karty microSD są tanie (8 GB class 4 od 12 zł widzę, za mniej niż 20 zł można nawet 16 GB class 10 w sklepie kupić), więc rozważania o rozmiarze 2 GB są czysto teoretyczne, o tyle w przypadku wbudowanej pamięci nie ma możliwości zmiany jej rozmiaru – trzeba zmienić urządzenie. Gra w tym przypadku (Yanosik i jego cache plus jakieś inne dane typu zdjęcia, ale przypuszczam, że nie on jeden tak robi…) toczy się w praktyce o podwojenie miejsca…

Pewnego rodzaju obejściem problemu może być w tym przypadku opisane kiedyś przeniesienie aplikacji z pamięci wbudowanej na kartę. Oczywiście najlepiej sformatowaną na FAT32, ale to powinno już stać się automatycznie w przypadku pojemności większych niż 2 GB.

Jak przenieść aplikację na kartę SD w systemie Android? HOWTO

Na jednym starym urządzeniu z Androidem mam śmieszną ilość wbudowanego dysku w urządzeniu – poniżej 512 MB. Do tego wydawało mi się, że aplikacje ze sklepu Google Play mogą być instalowane tylko na wbudowanym flash w urządzenie. Dziś dowiedziałem się, jak zmusić Androida (przynajmniej poniżej wersji 5) do instalacji oprogramowania bezpośrednio na karcie SD. Operacja jest umiarkowanie prosta, więc jeśli ktoś ma problem z brakiem miejsca na telefonie, to polecam. Co zdziwiło mnie najbardziej to fakt, że nie jest konieczne rootowanie telefonu.

Wymagania

Aby odblokować możliwość przenoszenia praktycznie dowolnego oprogramowania na kartę SD, potrzebne będą:

  • kabel USB do połączenia telefonu i komputera,
  • Android w wersji niższej niż 5,
  • włączenie USB debugging na urządzeniu na czas zmiany ustawień,
  • oprogramowanie Android Debug Bridge (ADB) zainstalowane na komputerze (w przypadku Linuksa powinno być w repozytoriach).

Odblokowanie przenoszenia programów na kartę SD

  • upewniamy się, że tryb USB debugging jest włączony lub włączamy go,
  • podłączamy urządzenie do komputera,
  • sprawdzamy, czy jest widoczne (polecenie adb devices),
  • jeśli jest widoczne, wydajemy polecenie adb shell,
  • w powstałej konsoli wydajemy polecenie pm get-install-location – zapewne zobaczymy 0 lub 1, co oznacza odpowiednio wybór automatyczny lub wewnętrzną pamięć flash,
  • zmieniamy wartość na 2: pm set-install-location 2,
  • zamykamy konsolę adb, odpinamy telefon od komputera, wyłączamy USB debugging.

Przenoszenie programów na kartę SD

  • na telefonie wybieramy Ustawienia -> Aplikacje -> Na karcie SD,
  • „ptaszek” przy nazwie programu oznacza, że jest on na karcie SD,
  • wybieramy kolejno aplikacje i w ich ustawieniach wybieramy przenieś na kartę SD.

Po chwili powinniśmy zauważyć przyrost wolnego miejsca na wbudowanym w urządzenie nośniku.

Wady

Poza oczywistą zaletą, czyli możliwością instalacji większej ilości programów, co często oznacza być albo nie być dla urządzenia, są też wady:

  • wbudowana pamięć flash jest zwykle szybsza, niż karta, ale w praktyce nie odczuwam tego, na typowej lowendowej karcie,
  • niektóre aplikacje, zwł. systemowe lub Google nadal nie dają się przenieść,
  • przenoszone aplikacje zajmują nadal trochę miejsca na wewnętrznej pamięci.

Na zakończenie polecam lekturę pełniejszego opisu, z obrazkami (ang.) – widziałem kilka opisów, ale ten wydaje mi się najlepszy i najbardziej przystępny.

UPDATE

Debugowanie USB w Androidzie 4.2 i nowszych

W przypadku Androida w wersji 4.2 i nowszych, nie można tak zwyczajnie włączyć debugowania USB. Należy najpierw odblokować ukryte menu, a żeby to zrobić należy zostać programistą.
Wybieramy Ustawienia -> System -> Informacje o urządzeniu -> O telefonie i naciskamy 7 razy (nie, to nie jest żart). Po tym otrzymujemy informację, że zostaliśmy programistą. Następnie standardowo w Opcje programisty wybieramy Debugowanie USB.

Handel po polsku – jednak się da? @XKOM_PL

Generalnie nie mam w zwyczaju opisywać każdego sklepu (chyba, że ostro skopią…), w którym kupuję, ale dla x-kom.pl zrobię wyjątek, bo mnie urzekli aktywnością na Twitterze. Chyba pierwsza polska firma, która robi sensowny i nienachalny marketing w social media (tu: Twitter), więc w nagrodę trochę konstruktywnej – mam nadzieję – krytyki (czepialstwa).

tl;dr – warto obserwować na Twitterze, dobre promocje, działają nieźle i szybko, choć pewne rzeczy, raczej kosmetyczne, można poprawić.

Zaczęło się od tego, że któryś ze znajomych podzielił się statusem o którejś promocji. I okazała się ona być sensowna. Znaczy faktycznie upust do dobrej ceny, a nie „mamy 30% drożej niż konkurencja, to obniżmy cenę o 25% i zróbmy szum”. Rzuciłem okiem, stwierdziłem, że warto dodać do obserwowanych, bo może kiedyś coś mi się przyda, a recenzje klientów dość entuzjastyczne. Poza tym, jest interakcja z użytkownikami i raczej niewiele „pustych” statusów typu „co u was słychać?”. Chociaż – po sprawdzeniu – takie też się pojawiają, ale normalnie nie rzuca się w oczy, więc strawna ilość.

Wczoraj nadszedł ten dzień, że pojawiły się w promocji karty microSD Sandisk 16GB class 10. Za 19,99 zł, czyli cena, w której normalnie można kupić class 4. Sprawdziłem dziś na popularnym portalu Aukcyjnym i najtańsze takie karty były po 24 zł. Pomyślałem, że do Banana Pi jak znalazł i kupiłem. No to obiecane wrażenia z zakupu.

Kupno w sklepie internetowym wymaga rejestracji. Nie przepadam, ale taki jest de facto standard, więc nie narzekam. Na plus – zgoda na wysyłkę info o promocjach nie jest obowiązkowa. Na minus – konieczne jest podanie numeru telefonu, który – uprzedzę fakty – do niczego nie jest tak naprawdę potrzebny.

Po finalizacji zamówienia pojawia się informacja, że mail został wysłany. I żeby sprawdzać folder Spam. Zwłaszcza to drugie dziwi, bo istnieją sposoby, żeby takie rzeczy nie miały miejsca. Dla leniwych: są serwisy, przy użyciu których rozwiązuje się ten problem rzutem pieniądza, także polskie. Kolejna rzecz na minus – na maila czeka się długo. Na tyle długo, że zacząłem się dopytywać na Twitterze, ile. I nie, nie chodzi o greylisting. Ani nie wymagam od poczty dotarcia w kilkanaście sekund (choć prawda jest taka, że z większości serwisów maile mam na skrzynce w małe kilkadziesiąt sekund).

Łącznie dostałem cztery maile, wszystkie z jednego adresu (OK!):

  1. Potwierdzenie rejestracji
  2. Twoje zamówienie zostało przyjęte
  3. Twoje zamówienie oczekuje na realizację
  4. Twoje zamówienie zostało przekazane do realizacji

Pierwszego nie trzeba komentować – po prostu potwierdzenie rejestracji. Drugi, wysłany 8 minut(!) później, potwierdza przyjęcie do zamówienia i mówi, że „W kolejnej wiadomości otrzymasz szczegółowe informacje na temat sposobu jego realizacji”. Ciekawostką jest trzeci „Twoje zamówienie nr xxx zostanie skompletowane najszybciej jak to możliwe. Poinformujemy Cię o tym w kolejnej wiadomości. Jeśli terminy dostawy produktów Ci nie odpowiadają, możesz anulować zamówienie klikając na ten link”. Kupiłem dwie sztuki z odbiorem w salonie, dostępna była jedna. Fajnie, że mogę zrezygnować z zamówienia, ale szkoda, że nie ma informacji, ile będę tak naprawdę czekał (brak nawet przybliżonego czasu). Ostatni mail zawiera informację o tym, że zamówienie można odebrać. I został wysłany 25h od złożenia zamówienia, czyli bardzo dobry wynik.

Co mi się nie podoba? Tematy maili. Pierwsze dwa są OK, ale trzeci i czwarty są IMO mylące. Jak dla mnie to zamówienie „oczekuje na realizację”  czy też „jest realizowane” od momentu przyjęcia zamówienia. Nazwałbym to po prostu „opóźnienie w realizacji zamówienia”, bo taka jest wymowa. I dodał orientacyjny termin. Ostatnie – zupełnie nie wiem, czemu nie „zamówienie gotowe do odbioru” ew., jeśli to wspólne dla wysyłek pocztą „zamówienie zrealizowane”.

I tu dochodzi ostatni element, czyli SMS. Po pierwsze, został on wysłany po ostatnim mailu. Minutę, ale jednak. Po drugie, nie zawierał numeru zamówienia. Po trzecie: nic nie wniósł całego procesu. Numer telefonu mógłby być niewymagany, tak naprawdę.

Wyszło, że narzekam. Ale nie narzekam, wręcz przeciwnie. Jest szybko (25h od zamówienia do odbioru w moim mieście) i sprawnie, ceny dobre. Miła odmiana po tym, co opisywałem ostatnio, choć przyznaję, że Chińczycy stawiają poprzeczkę wysoko, jeśli chodzi o ceny, czas realizacji i obsługę klienta (w tym bezpieczeństwo transakcji). Podsumowanie: dobre ceny (przynajmniej na promocjach), szybka realizacja. Będę kibicować i korzystać.

101 filmów czyli VOD i promocja Żywca

W sklepie zobaczyłem na opakowaniu Żywca 1 piwo = 1 film, co przesądziło o zakupie. Może nie miałem wielkiej ochoty na Żywca, ale uchodzi, a stwierdziłem, że dawno nie zaglądałem na portale VOD. Ostatnio jak patrzyłem, to dominowała chała i nie działało pod Linuksem. Stwierdziłem, że w najgorszym wypadku dam kody znajomym, ale pewnie i tak znajdą się jakieś filmy, które można zobaczyć, najwyżej nie na podstawowym kompie.

Zatem kupiłem czteropak. Wizyta na portalu 101filmow.pl, żeby zobaczyć co dają i upewnić się, że na Linuksie nie zadziała. Jeśli chodzi o pierwszą część, to miło się rozczarowałem oferowanym repertuarem. Filmy zdecydowanie do obejrzenia – i trochę w miarę nowych, i trochę klasyki, i parę ambitniejszych. Jeśli chodzi o część drugą, to przeczytałem wymagania, nic o Linuksie nie znalazłem (ani o wymogu Windows), ale gdzieś mignęło mi, że część filmów nie działa na platformach mobilnych. Czyli jakieś ciężkie DRM, czyli zapomnij o Linuksie. Potem doczytałem na vod.pl, że wymagany jest Windows. Oczywiście planowałem zgłosić błąd (skoro na 101filmow.pl nic nie piszą, że na Linuksie nie działa), ale później okazało się, że część filmów (bez zabezpieczeń) działa.

Jednak nie uprzedzajmy faktów. Zarejestrowałem konto (na jakiś tymczasowy adres), wklepałem kody. Nawet fajnie rozwiązane. Jedyny zgrzyt, który się pojawił to termin ważności kodów do 28. lutego. No c’mon… Drugi zgrzyt to 48h na obejrzenie. Niby dużo i pewnie chodzi o to, by nie dzielić się kodami zanadto, ale… inne mam wymagania już. Na jeden wieczór może film się nie zmieścić, drugiego coś może wypaść… 72h to IMHO minimum, no dobra, 50h. 😉

Na pierwszy rzut poleciał Jak zostać królem, który kiedyś widziałem (a młoda nie). Po włączeniu pierwsze rozczarowanie: nie można wybrać wersji innej, niż z lektorem dostarczonej przez wydawcę. Znaczy: nic nie można wybrać; jak jest lektor, to jest lektor i kropka, jak napisy (rzadkość), to napisy. Ejże, to już nawet chyba na wszystkich(?) kanałach jest, przynajmniej z satki… Druga sprawa: jakość. Pomiarów jeszcze nie robiłem, ale wygląda to na ekranie komputera, jak… kiedyś na telewizorze kineskopowym, czyli okolice PAL. Okolice 480p na YouTube. Jak na dzisiejsze czasy – trochę słabo. Tym bardziej, że net przyzwoity (realnie ~15-20 Mbps do kompa), więc spokojnie weszłoby w znacznie lepszej rozdzielczości.

Najgorsze jednak okazał się zaciachy. Pierwszy w piątej, minucie, kolejny w ósmej. Wkurzyłem się, zrestartowałem przeglądarkę i… pomogło, a raczej, prawie pomogło, bo jeszcze jedna ścinka pod koniec była. Następnego dnia sprawdziłem pod Linuksem i… film też działał. Nie trzeba mieć Silverlighta, wystarczy Flash… Na dodatek się nie ciął. Z innymi filmami było podobnie. Nie wiem czy kwestia serwisu, czy systemu, czy np. ilości wolnego miejsca na dysku (jest mało, rzędu 2 GB). Jeśli nawet to ostatnie, to oczekiwałbym informacji o niewystarczających zasobach od odtwarzacza… Uznam jednak (brzytwa Ockhama), że to wina systemu.

Ogólnie mam mieszane uczucia. Z jednej strony darowanemu koniowi w zęby się nie zagląda, z drugiej bardzo średni produkt dają, jak na dzisiejsze czasy. Najbardziej chyba obowiązkowy lektor mnie rozczarował. Ogólnie: 4/10.

UPDATE: Włoski dla początkujących już nie działa pod Linuksem, czyli na 101filmow.pl nie wszystkie są „przyjazne” – Flash nie starczy, trzeba mieć Silverlight. Za to zaciachów na nim nie stwierdzono (póki co, bo to połowa).

UPDATE2: Niektóre filmy jakby lepiej wyglądają, więc może opinia o jakości była pochopna. Niektóre płatne filmy są poprzedzone reklamą. Spotkałem raz, krótka i nienachalna reklama filmu Hiszpanka w kinie, ale jednak. Last but not least – część filmów na vod.pl jest dostępna za darmo, bez żadnych kodów.

Raspberry Pi, Raspbian i problemy z kartami microSD

Jakieś siedem tygodni temu pisałem, że padła mi karta microSD (Kingston) w Raspberry Pi. Wymieniłem na nową (Goodram). Zamontowana oszczędnie, tj. bez journala i z symlinkiem /var/lib/transmission-daemon/info kierującym na dysk twardy. Wczoraj robię aktualizację systemu, a tu nagle:

Preparing to replace libssl1.0.0:armhf 1.0.1e-2+rvt+deb7u7 (using .../libssl1.0.0_1.0.1e-2+rvt+deb7u10_armhf.deb) ...
Unpacking replacement libssl1.0.0:armhf ... dpkg: error processing /var/cache/apt/archives/libssl1.0.0_1.0.1e-2+rvt+deb7u10_armhf.deb (--unpack):
error creating directory `./usr/share/doc/libssl1.0.0': Input/output error
Segmentation fault Segmentation fault -bash: mbrtowc.c:92: __mbrtowc: Assertion `status == __GCONV_OK || status == __GCONV_EMPTY_INPUT || status == __GCONV_ILLEGAL_INPUT || status == __GCONV_INCOMPLETE_INPUT || status == __GCONV_FULL_OUTPUT' failed.

Piękne, prawda? Oczywiście kluczowy jest input/output error. Fsck, są błędy, naprawiony filesystem. Coś mnie tknęło i sprawdziłem badblocks (badblocks -sv). Tak jest, błędy w okolicy 90% karty (dead link). Sztuk prawie 30. Wygląda, że karta Goodram wytrzymała w komfortowych warunkach raptem 7 tygodni. Masakra.

Z tego wszystkiego zacząłem sprawdzać, co pisze na dysk (iotop -ao). Wyniki (sortowane po ilości zapisów, czas działania kilka godzin) są ciekawe:

3192 be/4 root 8.00 K 4.03 M 0.00 % 0.00 % rsyslogd -c5
2184 be/4 root 240.00 K 880.00 K 0.00 % 0.00 % nmbd -D
3341 be/4 ntp 248.00 K 188.00 K 0.00 % 0.00 % ntpd -p /var/run/ntpd.pid -g -u 102:104
5256 be/4 root 0.00 B 160.00 K 0.00 % 0.00 % [kworker/u2:2]
2911 be/4 root 208.00 K 88.00 K 0.00 % 0.00 % -bash

Jak widać, głównie rsyslog. I raczej nie ma tego wiele.

I tu zaczyna się część najciekawsza. Pamiętacie uszkodzoną kartę Kingstona? Przygotowałem się do pozbycia się jej, poleciał shred. Stwierdziłem, że uruchomię badblocks na niej. I… niespodzianka. Teraz nie zgłasza błędów. Ani w teście odczytu (domyślny), ani w niedestrukcyjnym teście zapisu (badblocks -nvs). Naprawiło się?

Zaczynam podejrzewać jakiegoś buga z przejściówką microSD -> SD (ale są dwie różne, bo każda karta miała swoją), gniazdem w rpi (ale działało OK, poza tym i badblocks, i fsck robię w laptopie). Zagadka.

Ostatecznie zmniejszyłem rozmiar partycji ext4 na karcie Kingstona i działa do tej pory bez problemu. Czyli jakieś 3 tygodnie bezproblemowego działania, bo wpis zacząłem tworzyć 12 czerwca.

UPDATE: Zwariowałem. Goodram, który ewidentnie miał błędy, bo nie tylko badblocks je wykazywał, ale nawet shred puszczony przed wyrzuceniem powodował błędy IO i nie mógł dobrnąć do końca (a próbowałem nie raz), teraz działa. Nagrałem Raspbiana dla Banana Pi, test badblockiem i… czysto. WTF?