morfik

Moderator
  • Zawartość

    721
  • Rejestracja

  • Ostatnia wizyta

Zawartość dodana przez morfik

  1. Is your SIM card working properly?
  2. Look at the picture below:
  3. Może po prostu odznaczyłeś za dużo w autostarcie? Zobacz czy masz włączone Gboard.
  4. Każdy z nas słyszał o alternatywnym firmware na bezprzewodowe routery WiFi. Mam tutaj na myśli oczywiście OpenWRT/LEDE oraz jego GUI Gargoyle i LUCI. Przy zabawach z takim oprogramowaniem bardzo łatwo jest uszkodzić router w sytuacji, gdy tak na dobrą sprawę nie wiemy co robimy. Mi się jeszcze nie zdarzyło ubić żadnej z moich maszyn, a mam ich kilka. Problem w tym, że tak naprawdę nie wiem jak wygląda proces odzyskiwania routera w przypadku zaistnienia takiego złego scenariusza. Dlatego też postanowiłem zainicjować zdarzenie, które doprowadziło do ubicia systemu w moim TL-WR1043ND V2 od TP-LINK. Co zrobić w takim przypadku, gdy system routera nie chce wystartować, a na obudowie diody sygnalizują nieprawidłową pracę urządzenia? W takiej sytuacji będziemy musieli rozebrać sprzęt i podłączyć się do portu szeregowego na PCB za pomocą adaptera USB-UART, najlepiej na układzie CP2102, który bez problemu działa pod linux. Ten artykuł nie powstałby (tak szybko), gdyby nie pomoc ze strony @Heinz. Jaki adapter USB-UART wybrać Przed przystąpieniem do procesu odzyskiwania władzy nad systemem routera, musimy się zaopatrzyć w odpowiednie narzędzia, które umożliwią na bardzo niskopoziomową komunikację z ubitym urządzeniem. Może i system takiego routera nie może się załadować ale jest duża szansa na to, że bootloader w dalszym ciągu pracuje prawidłowo (można to poznać po migających diodach), z tym, że z jakiegoś powodu nie może on uruchomić systemu. Jest wiele adapterów USB-UART, które możemy zakupić w sklepach internetowych. Co ciekawe, w fizycznych sklepach w ogóle o takich urządzeniach nie słyszeli (przynajmniej u mnie na wsi) i raczej pozostaje nam zakup zdalny. Cena takiego adaptera zamyka się w granicach 10-20 zł. Przy zakupie musimy brać pod uwagę jedną bardzo istotną rzecz. Chodzi o to, że standardowe napięcie w porcie USB komputera jest na poziomie 5 V. Te adaptery USB-UART na takim napięciu standardowo działają w przeciwieństwie do obwodu szeregowego w większości routerów. Nie możemy zatem się podłączyć do routera od tak. Jeśli ten obwód w naszym routerze jest zasilany innym napięciem, zwykle 3,3 V, to przed zakupem musimy się upewnić, że adapter USB-UART na pinach RX i TX będzie miał takie właśnie napięcie, ewentualnie będzie wyposażony w konwerter napięć. Patrząc na fotki urządzenia w sklepie możemy czasem na nich zobaczyć informacje o dwóch rodzajach napięć 3,3 V i 5 V. Popatrzmy na te poniższe adaptery USB-UART na układach CP2102: Na pierwszym adapterze konwerter napięć jest w postaci trzech padów i zespolenie dwóch z nich steruje napięciem. Na tym drugim zaś mamy nieco bardziej cywilizowane rozwiązanie, bo napięciem operujemy przy użyciu zworki. Niemniej jednak, w obu przypadkach sterujemy jedynie napięciem na pinie VCC, a nas interesują piny RX i TX. W przypadku adapterów na układzie CP2102 napięcie na pinach RX i TX jest zawsze takie samo i wynosi 3,3 V, zatem możemy zakupić dowolny adapter o ile jest on na tym właśnie układzie. Test napięcia w konwerterze USB-UART Jeśli nie jesteśmy pewni czy zakupiliśmy odpowiedni adapter USB-UART i nie chcemy spalić routera (czy tylko jego obwodu szeregowego), to zawsze możemy sprawdzić jakie napięcie na pinach RX/TX tego adaptera faktycznie jest. Do tego celu posłuży nam multimetr. Napięcie mierzymy między GND i RX lub TX. Powinniśmy uzyskać wskazanie na poziomie około 3,3 V, tak jak to widać na poniższej fotce: Jak widać z portu USB dostarczanych jest 5 V, a a między pinem GND i TX adaptera mamy już ~3,3 V. Możemy zatem bez obaw wykorzystać to urządzenie i wpiąć się do portu szeregowego routera. W tym przypadku położenie zworki nie ma żadnego znaczenia i wskazania są takie same nawet po jej usunięciu. W przypadku, gdyby zmiana położenia zworki dawała inne napięcia, to oczywiście wybieramy tę pozycję, która wskazuje 3,3 V. Warto też zaznaczyć, że oferty adapterów USB-UART znacznie się różnią pod względem dodatków, które dostajemy razem z adapterem. Zwykle kupujemy gołe urządzenie ale czasem też dorzucane są kolorowe kabelki albo też i goldpiny. Mi do jednego zestawu dorzucili kabelki, a drugiego trochę goldpinów: Jeśli jednak nabyliśmy taki adapter bez kabelków i goldpinów, to albo musimy dokupić je osobno, albo też zrobić je samemu. Port szeregowy routera (serial port) Port szeregowy znajduje się na płycie głównej routera. By się dostać do płyty, trzeba ściągnąć obudowę. Czasami nie jest to proste zadanie i trzeba poszukać odpowiedniej instrukcji. Zwykle informacje na ten temat są podane na wiki OpenWRT przy specyfikacji konkretnego modelu routera. Jeśli zaś chodzi o TL-WR1043ND, to raczej ze ściągnięciem górnej części obudowy nie powinno być problemu. Po odkręceniu śrubek, trzeba wypiąć ją z zatrzasków. Jest ich 8: 1 na tylnej krawędzi, 2 na prawej, 2 na lewej i 3 na przedniej. Są one rozlokowane w rogach i mniej więcej po środku. Otwieranie obudowy najlepiej zacząć od jednego z rogów przy tylnej krawędzi zahaczając palcami o wystający część obudowy i podnosząc ją lekko do góry, tak by można było w powstały otwór wsunąć cienki ale sztywny kawałek metalu czy czegoś podobnego. Później wystarczy przesunąć się jak najbliżej rogu i pewnie podważyć, zatrzask powinien bez problemu puścić. Później wystarczy przesuwać się wzdłuż krawędzi i powtarzać czynność podważenia w miejscu, w którym już nie możemy dalej się przemieścić. Po zdjęciu obudowy, mamy dostęp do płyty głównej. Port szeregowy, a właściwie tylko jego wyprowadzenia są ulokowane w lewej górnej części płyty, to te cztery dziurki widoczne na poniższej fotce: Trzeba tam przylutować jakaś wtyczkę albo chociaż gołe goldpiny. Niemniej jednak, by to zrobić, musimy wyciągnąć ten PCB z routera. Trzeba pierw odkręcić gniazda anten. Niektóre z nich mogą mieć problemy z przeciśnięciem się przez otwór. Trzeba nimi trochę pokręcić i poruszać na boki: Konstrukcja wtyczki dla portu szeregowego routera Po wyciągnięciu płyty z routera, możemy zabrać się za przylutowanie goldpinów czy wtyczki. Ja sobie skonstruowałem wtyczkę z elementów odzyskanych ze starej płyty głównej. Odlutowałem z niej 4 goldpiny i ściągnąłem kawałek plastiku, który był do nich przymocowany: Później takie ustrojstwo wsadziłem na płytę routera i przylutowałem. Całość się trzyma w miarę pewnie, choć ciężko było to przylutować (brak profesjonalnych narzędzi i wprawy). Tak czy inaczej, całość działa. Warto przed podłączeniem zasilania routera sprawdzić multimetrem czy nie ma tam czasem jakiegoś zwarcia. Jeśli miernik nie zabrzęczy, tzn. że jest wszytko w porządku. Konfiguracja linux'a na potrzeby połączenia szeregowego Ja korzystam z linux'a, a konkretnie z dystrybucji Debian. Dlatego też opiszę na jego przykładzie jak przebiega proces konfiguracji systemu pod kątem połączenia komputera z portem szeregowym routera. Przede wszystkim, podepnijmy sam adapter USB-UART do portu USB komputera. Układ CP2102 powinien zostać bez większego problemu rozpoznany w naszym systemie ( idVendor=10c4 , idProduct=ea60 ). Poniżej log ze zdarzenia: kernel: usb 2-1.3: new full-speed USB device number 6 using ehci-pci kernel: usb 2-1.3: New USB device found, idVendor=10c4, idProduct=ea60 kernel: usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 kernel: usb 2-1.3: Product: CP2102 USB to UART Bridge Controller kernel: usb 2-1.3: Manufacturer: Silicon Labs kernel: usb 2-1.3: SerialNumber: 0001 kernel: usbcore: registered new interface driver usbserial kernel: usbcore: registered new interface driver usbserial_generic kernel: usbserial: USB Serial support registered for generic kernel: usbcore: registered new interface driver cp210x kernel: usbserial: USB Serial support registered for cp210x kernel: cp210x 2-1.3:1.0: cp210x converter detected kernel: usb 2-1.3: cp210x converter now attached to ttyUSB0 Został zarejestrowany nowy interfejs ttyUSB0 i to przy jego pomocy będziemy się komunikować z routerem. Standardowo tylko użytkownik root oraz członkowie grupy dialout mają prawa dostępu do urządzenia /dev/ttyUSB0 . Dodajmy zatem standardowego użytkownika do tej grupy w poniższy sposób: # adduser morfik dialout Potrzebne nam jest także jakieś oprogramowanie, które zinterpretuje nasze polecenia i prześle je do routera. Musimy zatem mieć dostęp do terminala i zainstalować program do komunikacji szeregowej, np. minicom czy picocom . W Debianie znajdują się one w pakietach pod tymi samymi nazwami. Wybieramy sobie jeden z nich i instalujemy w systemie. Ja będę korzystał z picocom . Kolejna sprawa, to konfiguracja picocom . By skomunikować się z routerem za pomocą konsoli szeregowej, musimy zdefiniować kilka parametrów dla połączenia. Konkretne ustawienie zależą od sprzętu lub jego firmware. Zwykle będziemy musieli dostosować parametr baud, którego najczęściej używane wartości to 9600, 38400 lub 115200 bit/s. W przypadku korzystania tylko z 3 przewodów (na PCB routera widzieliśmy 4 piny), tj. RX, TX, GND, powinniśmy ustawić flow control: none. W zasadzie to są te najważniejsze rzeczy ale możemy także sprecyzować data bits: 8, parity: none, stop bits: 1. Oznaczenia pinów na adapterze USB-UART i PCB routera By zestawić połączenie z routerem potrzebujemy podłączyć do jego płyty co najmniej trzy przewody. Jeden z nich to masa (GND), drugi odpowiada za przesył danych (TX), a ostatni zaś za odbiór danych (RX). Jeśli chodzi zaś o sposób podłączenia przewodów, to łączymy następująco: GND-GND, RX-TX i TX-RX. Na Adapterze USB-UART mamy stosownie oznaczone piny. Pytanie tylko, które piny na płycie głównej routera to GND, RX i TX? Zwykle możemy te dane znaleźć na wiki OpenWRT. A co jeśli w przypadku naszego modelu routera tych danych nie znajdziemy na wiki? W takiej sytuacji trzeba ręcznie ustalić oznaczenia pinów, a do tego potrzebny nam będzie multimetr. Pin GND Wyłączamy zatem nasz router i przełączamy multimetr w tryb omomierza na brzęczyk. Podłączamy czarną sondę do znanego nam punktu masy na PCB routera. Jak ustalić gdzie znajduje się znany punkt masy na PCB routera? Najprościej skorzystać z zasilacza, a konkretnie z gniazda zasilania w routerze. Na zasilaczu mamy oznaczenia + i - . Wygląda to mniej więcej tak jak na force poniżej: W tym przypadku wiemy, że masa jest na zewnątrz. Gdybyśmy nie mieli oznaczeń na zasilaczu, to trzeba by sprawdzić ten stan rzeczy multimetrem. W tym celu podłączamy sam zasilacz do gniazdka i wtykamy jedną sondę we wtyczkę, a drugą sondą dotykamy zewnętrznej jej części, tak jak pokazane na poniższej fotce: Wskazanie multimetru przy takim podłączeniu przewodów zarówno do miernika jak i wtyczki zasilacza jest dodatnie, zatem wiemy, że masa jest tam, gdzie mamy podpięty czarny przewód, tj. na zewnątrz, co potwierdza oznaczenie na zasilaczu. Mając tę wiedzę, możemy przyjrzeć się bliżej routerowi. Ma on gniazdo zasilania: Widać tam bolec w środku i blaszkę na spodzie. Nasz znany punkt masy to właśnie ta blaszka, bo to ona styka się z zewnętrzną częścią wtyczki zasilacza. To do niej musimy podłączyć naszą czarną sondę, a czerwoną do każdego kolejnego pinu konsoli szeregowej. Przy jednym z pinów, multimetr zacznie nam brzęczeń, bo wskaże nam prawie zerową rezystancję. Oznacza to, że znaleźliśmy pin GND konsoli szeregowej: W przypadku pozostałych pinów, rezystancja będzie sporo wyższa: Pin VCC Mając pin GND, możemy włączyć router do prądu. Przełączamy multimetr w tryb woltomierza na zakres najbliższy 5 V (u mnie 20 DCV) i podpinamy czarną sondę do pinu GND, a czerwoną do każdego z pozostałych trzech pinów. Wynik jednego ze wskazań powinien nam pokazać 3,3 V (ewentualnie 5 V). Ten pin oznaczamy VCC. Lepiej wyprowadzić sobie kabelki z pinów na płycie, by czasem nie zewrzeć pinów, bo może nam to uszkodzić router. Pin RX i TX Pozostały nam dwa piny RX i TX. Odróżnienie ich odbywa się na zasadzie prób i błędów. Mamy w sumie dwie konfiguracje na linii komputer-router: RX-RX/TX-TX lub RX-TX/TX-RX. Niewłaściwe podłączenie przewodów sprawi, że na konsoli nie zobaczymy żadnego wyjścia lub też będzie ono w ogóle nieczytelne dla nas. Z kolei poprawne połączenie RX i TX powinno pokazać nam na konsoli komunikaty z fazy startu routera. Z reguły powinniśmy podłączyć te piny naprzemiennie, tj. RX-TX i TX-RX ale czasami oznaczenia RX/TX na adapterze USB-UART mogą już uwzględniać zamianę tych pinów i wtedy trzeba łączyć RX-RX i TX-TX i tak było w tym przypadku. Nawiązywanie połączenia z routerem za pomocą konsoli szeregowej Mając odpowiedni adapter USB-UART i oznaczone piny na routerze, możemy spróbować nawiązać połączenie z routerem przez konsolę szeregową. Podpinamy zatem przewody do adaptera USB-UART oraz do wtyczki konsoli szeregowej na płycie routera. Pamiętajmy, interesują nas jedynie piny GND, RX i TX. Adapter umieszczamy w porcie USB komputera. Odpalamy terminal i wpisujemy w nim to poniższe polecenie: $ picocom --baud 115200 --flow=none --parity=none --databits 8 /dev/ttyUSB0 port is : /dev/ttyUSB0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 escape is : C-a local echo is : no noinit is : no noreset is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv imap is : omap is : emap is : crcrlf,delbs, Terminal ready Teraz włączamy przycisk power na routerze. Urządzenie powinno się nam włączyć (zapalą się diody): Jednocześnie obserwujemy co się będzie działo na konsoli. Przy prawidłowej konfiguracji powinniśmy zobaczyć na niej jakieś komunikaty. Jak widać, pierwsza część logu to sekwencja bootloader'a. Na samym dole zaś mamy zainicjowany start kernela. Ta powyższa sytuacja dotyczy sprawnego routera. Co jednak w przypadku, gdy naszemu routerowi coś dolega? Jeśli jesteśmy w stanie dojść do momentu, gdzie widoczny jest napis Autobooting in 1 seconds (pod koniec logu na powyższej fotce), to jak tylko się on pojawi nam na ekranie, to musimy wpisać tpl . Nie jest to łatwe zadanie i pewnie będziemy musieli powtórzyć tę czynność parokrotnie. Gdy wpiszemy tę fazę w wyznaczonym czasie, pojawi się prompt: Mapa obszaru flash'a routera W przypadku, gdy udało nam się uzyskać dostęp do bootloader'a, możemy spróbować wgrać obraz firmware na router. Zanim jednak przejdziemy bezpośrednio do wgrywania obrazu, musimy ustalić kilka rzeczy. Gdy nasz router jest sprawny, lub też ktoś inny posiada dokładnie takie samo urządzenie, które działa bez zarzutu, można z niego wyciągnąć informacje na temat układu partycji na flash'u. Te dane są dla nas bardzo cenne, bo bez nich nie uda nam się z powodzeniem odratować naszego padniętego urządzenia. Układ flash'a routera można odczytać z dwóch plików: /proc/partitions oraz /proc/mtd . Poniżej jest zawartość pierwszego z nich: root@OpenWrt:/# cat /proc/partitions major minor #blocks name 31 0 128 mtdblock0 31 1 1158 mtdblock1 31 2 6841 mtdblock2 31 3 4352 mtdblock3 31 4 64 mtdblock4 31 5 8000 mtdblock5 Rozmiar bloku równy jest 1024 KiB. Z powyższych informacji wiemy, że jakiś bliżej nieznany nam obszar na flash'u routera ma ściśle określony rozmiar. Nie mamy jednak żadnych ludzkich nazw, które byłyby w stanie nam coś o tych przestrzeniach powiedzieć. Bardziej czytelnym plikiem jest zaś /proc/mtd : root@OpenWrt:/# cat /proc/mtd dev: size erasesize name mtd0: 00020000 00010000 "u-boot" mtd1: 00121b70 00010000 "kernel" mtd2: 006ae490 00010000 "rootfs" mtd3: 00440000 00010000 "rootfs_data" mtd4: 00010000 00010000 "art" mtd5: 007d0000 00010000 "firmware" Jak widać wyżej, poza rozmiarem konkretnego obszaru (wartość w HEX) mamy również jego ludzką nazwę. Cały obraz firmware routera TL-WR1043ND V2 ma 8192 KiB, czyli 8 MiB. Możemy to odczytać sumując u-boot, firmware i art. Da nam to wartość 0x00800000, czyli po przeliczeniu właśnie 8 MiB. Kernel i rootfs jest ulokowany w firmware. Z kolei rootfs_data zawiera się w rootfs. Jeśli nasz router nie chce się uruchomić z jakiegoś powodu ale mamy jednocześnie dostęp do bootloader'a przez konsolę szeregową, to znaczy, że obszar u-boot nie został naruszony i mamy sporą szansę na odzyskanie urządzenia. Niemnie jednak, musimy sobie zdawać sprawę, że nie będziemy zapisywać całej przestrzeni flash'a i z tego względu, ten proces jest iście niebezpieczny, bo źle wgrany firmware z poziomu bootloader'a może nam kompletnie uwalić router. Urządzenia po źle wgranym firmware już odratować się tak prosto nie da. Trzeba będzie odlutować flash z PCB routera i podpiąć go do zewnętrznego programatora. Jak się to robi, to nie mam zielonego pojęcia, więc lepiej się kilka razy zastanowić przed wydaniem jakichkolwiek poleceń będąc w konsoli bootloader'a. Procedura wgrania firmware z poziomu bootloader'a Przechodzimy zatem na stronę z obrazami firmware OpenWRT/LEDE i pobieramy plik dla modelu naszego routera mający w nazwie factory. Upewnijmy się też, że ten obraz jest przeznaczony na wersję sprzętową taką, którą router ma wypisaną na spodzie obudowy. Mając pobrany obraz z firmware, musimy go jakoś przesłać na router. Do tego celu wykorzystuje się protokół TFTP (uboższa wersja protokołu FTP). Do zestawienia połączenia wymagany jest klient i serwer. Klientem będzie router. Serwerem zaś nasz komputer. Bootloader routera posiada odpowiednie oprogramowanie kliencie (narzędzie tftp ). Na komputerze musimy zaś postawić serwer. Konfiguracja serwera TFTP pod linux W dystrybucji Debian jest kilka pakietów mających w nazwie tftp . Nas interesują pakiety zawierające demona umożliwiającego postawienie serwera TFTP, np. atftpd lub tftpd . Instalujemy zatem pierwszy z brzega, tj. atftpd . W procesie ratowania routera nie działa WiFi. Musimy zatem łączyć się przy wykorzystaniu przewodu. Nie będzie nam działał też serwer DHCP, przez co nie uzyskamy adresacji dynamicznej dla komputera. Musimy określić ją statycznie w poniższy sposób: # ifdown eth0 # ip link set dev eth0 up # ip addr add 192.168.1.100/24 brd + dev eth0 Adres widoczny wyżej (192.168.1.100) nie może być przypadkowy. Będąc w konsoli bootloader'a, przy pomocy printenv możemy podejrzeć kilka zmiennych, które u-boot wykorzystuje do swojej pracy. Tam z kolei mamy min. te dwie poniższe: ipaddr=192.168.1.111 serverip=192.168.1.100 Zatem router będzie miał adres 192.168.1.111 i będzie próbował połączyć się z adresem 192.168.1.100 . Dlatego to ten adres musimy ustawić w konfiguracji karty sieciowej komputera. Jeśli kogoś interesują pozostałe zmienne zwrócone przez printenv , to są one opisane na wiki OpenWRT. Musimy jeszcze uruchomić serwer TFTP. W tym celu edytujemy pierw plik /etc/default/atftpd i przepisujemy go do poniższej postaci: USE_INETD=false OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --maxthread 100 --verbose=5 --bind-address=192.168.1.100 /srv/tftp-openwrt" Tworzymy jeszcze katalog /srv/tftp-openwrt/ i nadajemy mu odpowiednie uprawnienia: # mkdir /srv/tftp-openwrt/ # chown nobody:nogroup /srv/tftp-openwrt/ Teraz stawiamy serwer poniższym poleceniem, weryfikując przy tym czy został on faktycznie uruchomiony: # /etc/init.d/atftpd start # netstat -tupan | grep atftpd udp 0 0 192.168.1.100:69 0.0.0.0:* 25408/atftpd Jak wgrać firmware przez konsolę szeregową z poziomu bootloader'a Serwer TFTP został uruchomiony, a jego katalog główny to /srv/tftp-openwrt/ . Do tego katalogu musimy wrzucić plik z obrazem firmware, nazywając go przy tym, np. obraz.bin , nazwa dowolna: # cp /home/morfik/Desktop/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v2-squashfs-factory.bin /srv/tftp-openwrt/obraz.bin Przechodzimy teraz do konsoli szeregowej. U-boot dysponuje kilkoma użytecznymi poleceniami. My będziemy wykorzystywać tftp , erase oraz cp.b . Poniżej znajdują się polecenia, które ja wykorzystałem przy ratowaniu swojego TL-WR1043ND V2. Polecenie tfpt pobierze plik obrazu firmware z dysku komputera i wrzuci go do pamięci RAM routera. Ta komenda przyjmuje dwa argumenty. Są nimi adres pamięci RAM, od którego obraz firmware będzie zapisywany, oraz nazwa pliku firmware, który zostanie pobrany z serwera TFTP naszego komputera. Nazwę znamy ale problematyczne może być określenie adresu pamięci RAM. O tym będzie w dalszej części artykułu. ap135> tftp 0x80060000 obraz.bin Using eth1 device TFTP from server 192.168.1.100; our IP address is 192.168.1.111 Filename 'obraz.bin'. Load address: 0x80060000 Loading: ################################################################# Bytes transferred = 8126464 (7c0000 hex) Polecenie erase służy do zerowania pamięci flash. Przyjmuje ono również dwa argumenty. Pierwszym z nich jest adres pamięci flash, od którego ma się rozpocząć zerowanie. (ustalenie go również może być problematyczne). Drugim argumentem jest ilość bajtów, które zostaną wyzerowane (musi pasować do 0x7c0000). Operację zerowania musimy wykonać ze względu na budowę komórek pamięci flash. Dopiero po wyzerowaniu interesującego nas obszaru, możemy zacząć umieszczać na nim dane z firmware. ap135> erase 0x9f020000 +0x7c0000 Erasing flash... First 0x2 last 0x7d sector size 0x10000 125 Erased 124 sectors Polecenie cp.b ma za zdanie skopiować firmware z pamięci RAM i wgrać je na pamięć flash. Tutaj z kolei musimy określić trzy argumenty. Pierwszym z nich jest początkowy adres pamięci RAM, czyli to miejsce, w którym znajduje się początek obrazu firmware. Drugim argumentem jest początkowy adres pamięci flash, od którego zamierzamy zacząć wgrywać firmware. Trzecim zaś argumentem jest ilość bajtów, które zostaną skopiowane z pamięci RAM na pamięć flash routera. ap135> cp.b 0x80060000 0x9f020000 0x7c0000 Copy to Flash... write addr: 9f020000 done Teraz można zrestartować router. Jeśli nie pomyliliśmy adresów i przeprowadziliśmy powyższe kroki prawidłowo, to będziemy w stanie się zalogować na router z wykorzystaniem protokołu telnet. Jak ustalić odpowiednie adresy pamięci RAM i flash routera Powyższe adresy są unikatowe dla konkretnego modelu routera. Nie możemy zatem korzystać z nich w przypadku każdego routera, który nawali z jakiegoś bliżej nieznanego nam powodu. Nasuwa się zatem pytanie: jak ustalić te adresy? Zwykle tego typu informacje powinny być podane na wiki OpenWRT. W przypadku części routerów,polecenie printenv (wydane z poziomu bootloader'a) jest nam w stanie zwrócić kilka zmiennych zawierających pewne polecenia. Poniżej przykład z mojego routera: ... bootcmd=bootm 0x9f020000 ... lu=tftp 0x80060000 ${dir}u-boot.bin&&erase 0x9f000000 +$filesize&&cp.b $fileaddr 0x9f000000 $filesize lf=tftp 0x80060000 ${dir}ap135${bc}-jffs2&&erase 0x9f050000 +0x630000&&cp.b $fileaddr 0x9f050000 $filesize lk=tftp 0x80060000 ${dir}vmlinux${bc}.lzma.uImage&&erase 0x9f680000 +$filesize&&cp.b $fileaddr 0x9f680000 $filesize ... Na podstawie użytych tutaj adresów można ustalić adres pamięci RAM i flash, od których powinniśmy zacząć zapisywać dane. W bootcmd mamy adres pamięci flash, który ma zostać odczytany podczas fazy startu routera. Przed nim znajduje się tylko obszar bootloader'a. Wiemy zatem od którego adresu trzeba będzie flash wyczyścić. Znając rozmiar firmware (ten wgrany do pamięci RAM), wiemy jaki obszar należy wyzerować. W lu widzimy zaś tftp 0x80060000 . Jako, że polecenie tftp ładuje obraz do pamięci RAM routera, to mamy adres pamięci od którego możemy zacząć zapisywać dane w RAM. Nie zawsze tego typu zmienne będziemy mieć dostępne w środowisku bootloader'a i odpowiednie adresy trzeba będzie ustalić w bliżej mi nie znany jeszcze sposób. Warto tutaj nadmienić, że wyżej widoczny adres odnoszący się do pamięci flash, tj. 0x9f000000, zostawiamy w spokoju. Określa on początek pamięci i nie możemy się nim posługiwać. Przy czyszczeniu i wgrywaniu danych na pamięć flash ( erase i cp.b ) musimy uwzględnić offset na bootloader. Standardowo jest to 128 KiB, które w zapisie HEX przyjmują wartość 0x20000. Trzeba zatem tę wartość dodać do 0x9f000000 i w ten sposób otrzymamy początkowy adres pamięci flash, od którego możemy zacząć kasować/zapisywać dane z firmware, tj. 0x9f020000, czyli uzyskaliśmy dokładnie taki sam adres co w bootcmd . Trzeba także uważać na długość wgrywanego obrazu (ilość bajtów). Na końcu flash'a routera mającego podzespoły od Qualcomm Atheros znajduje się obszar art (Atheros Radio Test). Zawiera on dane kalibracyjne dla WiFi (EEPROM). Informacje zawarte na tej partycji są unikatowe dla każdego indywidualnego routera. Jeśli uszkodzimy ten obszar, np. zapisując zbyt wiele danych, to trwale uwalimy WiFi w routerze, no chyba, że mamy backup tej przestrzeni albo i całego flash'a routera i będziemy w stanie ten obszar odtworzyć. Przykład z życia, czyli planowe ubicie TL-WR1043ND Nigdy mi się jeszcze nie zdarzyło ubić żadnego z posiadanych przeze mnie sprzętów. Niemniej jednak, przydałoby się odpowiedzieć na kilka pytań, a do tego potrzebny jest test na żywym organizmie. Postanowiłem zatem wgrać na mój router TL-WR1043ND V2 kilka różnych obrazów, w tym też te nieprzeznaczone dla niego. Obrazy są różne: oficjalne (z/bez boot) oraz OpenWRT/LEDE factory/sysupgrade. Przetestowałem też zanik zasilania podczas wgrywania firmware. Wszystko po to, by sprawdzić co tak naprawdę jest w stanie uszkodzić router i w jakim stopniu. Czy obraz "factory" uszkodzi router z OpenWRT/LEDE Mając wgrany firmware OpenWRT/LEDE zwykle flash'ujemy go obrazem mającym w nazwie sysupgrade . Jak jednak zareaguje nasz router po podaniu mu pełnego obrazu factory ? W sumie zawsze chciałem to sprawdzić ale jakoś nigdy nie było okazji. Kopiujemy zatem firmware do pamięci routera via scp , logujemy się na router i wgrywamy firmware via sysupgrade : Jak widzimy wyżej, router działa bez problemu. Zatem wiemy, że obrazy OpenWRT/LEDE mające w nazwie factory nie ubiją nam routera. Niemniej jednak, w porównaniu do tych mających w nazwie sysupgrade są zwykle parokrotnie większe przez co lepiej jest korzystać z tych drugich, a factory używać jedynie przy zmianie firmware z oficjalnego na OpenWRT/LEDE. Czy obraz przeznaczony na inną wersję/model routera uszkodzi router Wgranie obrazu firmware przeznaczonego na inną wersję/model routera powinno uszkodzić router. W przypadku innej wersji sprzętowej nie zawsze jest to regułą. Pytanie zwykle sprowadza się do różnicy w podzespołach routera. Jeśli te się zmieniły nieznacznie, to jest duża szansa, że router wstanie, choć może nie działać tak jak byśmy tego oczekiwali. Ja dysponuję routerem TL-WR1043ND w wersji V2, a on się zmienił dość znacznie w porównaniu do wersji V1. Możemy zatem przypuszczać, że wgranie firmware dla wersji V1 ubije router. Sprawdźmy zatem co faktycznie się stanie (bez znaczenia czy użyjemy sysupgrade czy factory ). Nie mamy możliwości wgrania firmware przeznaczonego na inną wersję sprzętową routera. Podobnie sprawa będzie wyglądać w przypadku zupełnie innego modelu routera. Jak widać w powyższym komunikacie, został porównany ID: Invalid image, hardware ID mismatch, hw:10430002 image:10430001 . Zatem ID sprzętu nie pasuje do ID uzyskanego z obrazu, w efekcie system odmawia próby wgrania takiego firmware z oczywistych względów. Może i mechanizmy obronne wbudowane w firmware OpenWRT/LEDE działają i są w stanie nas ochronić przed tak banalnymi błędami, to w dalszym ciągu możemy uszkodzić router wgrywając oprogramowanie na siłę przez sysupgrade (przełącznik -F ). Innym sposobem flash'owania, który może nam napytać biedy, jest nieumiejętne korzystanie z narzędzia mtd , przy pomocy którego można wykonywać operacje bezpośrednio na pamięci flash. Jeśli zatem zamierzamy przy pomocy sysupgrade -F lub mtd write wgrywać jakiś obraz firmware, to upewnijmy się, że nie jest on przeznaczony na inne wersje sprzętowe routerów albo i całkowicie inne modele. Czy zanik prądu uszkodzi router z OpenWRT/LEDE Zanik prądu jest znanym mordercą routerów. Niemniej jednak, z racji różnicy w oficjalnym firmware TP-LINK'a i firmware OpenWRT/LEDE, sprawa może się inaczej potoczyć. Przede wszystkim, zanik prądu może pojawić się w różnych momentach. W przypadku obrazów TP-LINK'a mających w nazwie boot , system będzie próbował przepisać bootloader (bez części konfiguracyjnej). By to zrobić musi wyczyścić ten obszar. Jeśli w tym czasie nastąpi zanik napięcia, to nie tylko router zostanie uszkodzony ale też już nie damy rady go odzyskać przez konsolę szeregową i trzeba będzie korzystać z programatora. W przypadku firmware OpenWRT/LEDE nie musimy się aż tak martwić, bo tutaj nie jest ruszany w ogóle bootloader. W efekcie nawet jeśli nastąpi zanik napięcia, to obszar u-boot zostaje nietknięty i możemy wgrać się później przez konsolę szeregową. Podobnie sprawa ma się w przypadku obrazów oficjalnych bez frazy boot w nazwie. Tutaj również nie jest przepisywany bootloader i przy zaniku napięcia będziemy w stanie odzyskać router. Sprawdźmy zatem co się stanie po puszczeniu procesu aktualizacji firmware via sysupgrade i odłączeniu zasilania routera tak po trzech sekundach. Oczywiście flash'ujemy router z poziomu sysupgrade na firmware OpenWRT/LEDE: W momencie uwiecznionym powyżej nastąpił symulowany zanik zasilania. System routera po włączeniu nie startuje. Zapalają się wszystkie diody, po czym część z nich gaśnie. Dioda Power, System i WPS świecą się ciągle. Dioda WLAN jest zgaszona cały czas, natomiast wszystkie pięć diod od portów ethernet miga. Ten proces zdaje się być zapętlony, czyli jakaś aktywność routera się zachowała. Jako, że diody migają i router się cały czas restartuje, oznacza to, że bootloader działa raczej prawidłowo i jego obszar nie uległ przepisaniu. Niemniej jednak, bootloader nie jest w stanie podnieść systemu. Napotyka jakiś "bliżej nieznany błąd" i restartuje system mając nadzieję, że to coś da. Poniżej jest komunikat, który można zobaczyć na konsoli szeregowej: Autobooting in 1 seconds ## Booting image at 9f020000 ... Uncompressing Kernel Image ... ERROR: LzmaDecode.c, 543 Decoding error = 1 LZMA ERROR 1 - must RESET board to recover Router jest do odzyskania ale musimy zrobić użytek z konsoli szeregowej i opisanym wyżej sposobem wgrać firmware z poziomu bootloader'a. Czy obraz przeznaczony na inną wersję/model routera ubije router z oficjalnym firmware Podobnie jak w przypadku firmware OpenWRT/LEDE, oficjalny firmware TP-LINK'a również weryfikuje obrazy przed wgraniem ich przez panel administracyjny. Nie musimy się zatem obawiać, że przez przypadek wgramy obraz nieprzeznaczony dla naszego modelu/wersji routera. Czy wgranie oficjalnego firmware z "boot" w nazwie via sysupgrade uszkodzi router z OpenWRT/LEDE Firmware OpenWRT/LEDE nie dotyka praktycznie wcale obszaru flash, w którym siedzi bootloader. Jeśli teraz zamierzamy powrócić do oficjalnego firmware, to musimy pozyskać stosowny obraz. Wszystkie obrazy na stronie TP-LINK mają frazę boot . Oznacza to, że zawierają one część bootloader'a, którą proces flash'owania przepisuje podczas aktualizacji firmware z poziomu panelu administracyjnego TP-LINK'a. Jeśli taki obraz podamy w sysupgrade , to ta część bootloader'a z oficjalnego firmware powędruje na flash routera w miejsce, gdzie powinno znajdować się faktyczne oprogramowanie. W efekcie router nie będzie chciał się uruchomić ale będziemy w stanie go odzyskać przez konsolę szeregową. By uniknąć tego typu problemów, potrzebny nam jest obraz nieposiadający w nazwie frazy boot . Takie obrazy są dostępne w różnych miejscach: tutaj, tutaj, tutaj i pewnie jeszcze w wielu innych, o których nie wiem. Jeśli jednak dysponujemy obrazem mającym w nazwie boot i z jakiegoś powodu nie możemy pozyskać obrazu bez części bootloader'a, to możemy ten zbędny i niebezpieczny zarazem kawałek usunąć ręcznie. Możemy to zrobić przy pomocy dd z poziomu każdego linux'a (nawet OpenWRT/LEDE) w poniższy sposób: # dd if=firmware_z_boot.bin of=firmware_bez_boot.bin skip=257 bs=512 To powyższe polecenie usunie z początku obrazu pierwsze 131584 bajów (0x20200 w HEX) i taki obraz możemy już wgrać bez problemu na router via sysupgrade . Czy wgranie oficjalnego firmware NIEmającego "boot" w nazwie przez panel admina uszkodzi router Gdy oficjalny plik z firmware nie zawiera frazy boot w nazwie, to jest to mniej więcej taka sama wersja obrazu co w przypadku firmware OpenWRT/LEDE, który ma w nazwie factory . Wgranie oficjalnego obrazu bez boot z poziomu panelu administracyjnego TP-LINK'a nie uszkodzi naszego routera. Wgrywanie oficjalnych obrazów bez boot w nazwie jest nawet bezpieczniejsze, bo w tym przypadku nie jest przepisywany obszar u-boot. Dlatego też nawet w przypadku utraty zasilania podczas procesu flash'owania routera, będziemy w stanie odzyskać router przez konsolę szeregową. Czy obraz "sysupgrade" wgrany z panelu TP-LINK uszkodzi router Przy przechodzeniu z oficjalnego firmware na OpenWRT/LEDE stosuje się obrazy mające w nazwie factory . Z kolei zaś obrazy mające w nazwie sysupgrade są przeznaczone dla aktualizacji firmware routera. Czy wgrywając obraz sysupgrade można uszkodzić router? Sprawdźmy: Wygląda na to, że oficjalne oprogramowanie nie przyjmuje takiego obrazu zupełnie. Obraz factory i sysupgrade praktycznie niczym się nie różnią pod kątem zawartości. W przypadku factory na początku obrazu znajduje się tylko dodatkowy nagłówek i prawdopodobnie jego brak uniemożliwia wgranie obrazu na router z poziomu panelu administracyjnego TP-LINK'a. Backup pamięci flash router'a Jak widać z powyższych obserwacji bardzo ciężko jest doprowadzić router do stanu nieużywalności. Jeśli nie przytrafi nam się nagły zanik zasilania podczas procesu flash'owania, to raczej nie mamy możliwości uszkodzić routera, no chyba, że bardzo się o taki stan rzeczy postaramy. By uniknąć problemów przy ewentualnym eksperymentowaniu z routerem, najlepiej postarać się o backup całej przestrzeni flash. Backup z poziomu działającego firmware Jeśli nasz router działa bez problemu, możemy się na niego zalogować po ssh i przy pomocy dd zrzucić obrazy wszystkich pozycji, które widnieją w pliku /proc/mtd . Oczywiście moglibyśmy zrobić backup tylko u-boot, firmware i art ale później musielibyśmy kroić obraz by wyodrębnić konkretne jego części. Backup robimy przy pomocy dd zapisując dane w pamięci RAM routera: root@OpenWrt:/tmp# dd if=/dev/mtdblock0 of=/tmp/mtdblock0-u-boot.bin root@OpenWrt:/tmp# dd if=/dev/mtdblock1 of=/tmp/mtdblock1-kernel.bin root@OpenWrt:/tmp# dd if=/dev/mtdblock2 of=/tmp/mtdblock2-rootfs.bin root@OpenWrt:/tmp# dd if=/dev/mtdblock3 of=/tmp/mtdblock3-rootfs_data.bin root@OpenWrt:/tmp# dd if=/dev/mtdblock4 of=/tmp/mtdblock4-art.bin root@OpenWrt:/tmp# dd if=/dev/mtdblock5 of=/tmp/mtdblock5-firmware.bin Następnie tak utworzone pliki trzeba przesłać na komputer, np. via scp : $ scp root@192.168.1.1:/tmp/mtd\* ./ Odtwarzanie backup'u z poziomu firmware Odtworzenie backup'u uszkodzonego obszaru pamięci flash z poziomu działającego firmware jest stosunkowo proste. Załóżmy, że uszkodziliśmy sobie obszar art, w wyniku czego uszkodziliśmy WiFi. By przywrócić ten obszar, logujemy się na router i wrzucamy do pamięci plik backup'u. Później przy pomocy mtd write wgrywamy backup na odpowiedni obszar pamięci flash w poniższy sposób: # mtd write /tmp/mtdblock4-art.bin art Backup i odtwarzanie go z poziomu bootloader'a W przypadku, gdy nasz router znajduje się w stanie agonalnym ale mamy jeszcze możliwość zalogowania się do bootloader'a, to możemy pokusić się o zrobienie backup'u flash'a za sprawą konsoli szeregowej. Niemniej jednak, nie wszystkie wersje u-boot dysponują komendami umożliwiającymi przesłanie backup'u na serwer TFTP. Jeśli u-boot naszego routera takimi poleceniami nie dysponuje, to musimy postarać się o obraz initramfs, który załadujemy do pamięci RAM routera. W tym initramfs będą znajdować się potrzebne nam polecenia i backup wykonamy bez trudu. Obraz initramfs musimy sobie sami zbudować albo tez pozyskać od kogoś, kto już go zbudował. Jak przeprowadzić proces budowy obrazu initramfs wykracza poza ramy tego artykułu. (link FIXME). Jeśli zaś chodzi o kwestie odtworzenia backupu za pomocą bootloader'a, to raczej nie będziemy potrzebować takiej funkcjonalności. Poza tym, nie wszystkie bootloader'y dają nam możliwość skorzystania z mtd , tak jak to ma miejsce przy działającym firmware OpenWRT/LEDE. Nawet jeśli nasz bootloader wspiera taką możliwość, to trzeba uważać, bo nie zawsze obszary mtd widziane przez bootloader muszą się pokrywać z tymi udostępnianymi przez kernel w pliku /proc/mtd . Dlatego też lepiej posługiwać się offset'ami. Problemy z uruchomieniem routera przy podłączonym adapterze USB-UART Mój routera TL-WR1043ND V2 miał wgrany firmware OpenWRT Chaos Calmer. Był też jak najbardziej sprawny ale po podłączeniu adaptera USB-UART nie chciał się uruchomić. Zatrzymywał się na etapie bootloader'a z poniższą informacją: U-Boot 1.1.4 (Sep 10 2015 - 12:05:08) ap135 - Scorpion 1.0DRAM: sri Scorpion 1.0 ath_ddr_initial_config(211): (16bit) ddr1 init tap = 0x00000002 Tap (low, high) = (0xaa55aa55, 0x0) Tap values = (0x8, 0x8, 0x8, 0x8) 4 MB Niektóre adaptery USB-UART mogą uniemożliwić start routera. No to pojawia się pytanie jak próbować odzyskać router, gdy nie mamy możliwości zainicjowania bootloader'a? Najprościej jest kupić normalny adapter (jakieś polecane modele?), który nie zawiesi startu routera. Innym wyjściem jest podłączenie przewodu do pinu GND po włączeniu przycisku power routera. Trzeba tylko ustalić czas, po którym możemy ten pin GND podłączyć, a to już robimy metodą prób i błędów. W moim przypadku mogłem praktycznie od razu się podłączyć (tuż przed zgaśnięciem wszystkich diod na routerze). W innych sytuacjach trzeba będzie poczekać jedną czy kilka sekund i dopiero wtedy się wpiąć. Nie trzeba się oczywiście spieszyć z tym faktem, bo bootloader się będzie w kółko resetował, przez co i tak zobaczymy wszystkie komunikaty, które nam zostaną zwrócone.
  5. No tam masz: Autobooting in 1 seconds## Booting image at bf020000 ... Uncompressing Kernel Image ... OK Starting kernel ... Więc nie przerwałeś procedury startu.
  6. Jak byś przeczytał uważnie tamten artykuł, to byś nawet nie musiał nic sprawdzać. A co do innego Neffos'a to wolisz nowszy system czy lepsze parametry sprzętowe?
  7. Tematów się nie usuwa.
  8. Gdyby miał taką możliwość to by nie pisał tu chyba.
  9. To chyba nic nie da.
  10. To już musisz z serwisem obgadać.
  11. No to masz problem. Bez danych do konta nie ściągniesz FRP Lock w tym modelu i nie odblokujesz go. Masz trochę do poczytania.
  12. @julio I've managed to solve the issue. It's a little bit tricky, but there's an option to save contacts to the SIM card. Just do the following. Go into your contacts and search for import/export. It can be in the top-right corner menu. Select it and you'll see option to manage the SIM contatcs In the the top-right corner menu you have an option to add a contact. Hope that helps.
  13. Po uszkodzeniu jednego z moich smartfonów TP-LINK i skasowaniu na nim wszystkich danych na partycji /system/ trzeba było pomyśleć nad przywróceniem tego urządzenia do życia. Jednym z rozwiązać było binarne wgranie obrazu systemowej partycji bezpośrednio na flash przy pomocy narzędzia dd. Co jednak w przypadku, gdy nie mamy dostępu do backup'u lub tez zwyczajnie go nie zrobiliśmy? Co w takiej sytuacji uczynić i czy jest jakaś nadzieja dla naszego telefonu? Odpowiedź jest naturalnie twierdząca ale wymagane są dwie rzeczy: działający tryb recovery (najlepiej TWRP) ze wsparciem dla trybu "ADB sideload" oraz paczka update.zip z firmware, którą można pobrać bezpośrednio ze strony TP-LINK/Neffos. By ulżyć nieco osobom, które do mnie piszą z zapytaniem o pomoc w przypadku skasowania danych na partycji /system/ (czy uszkodzenia jej w jakiś sposób), postanowiłem napisać krótkie howto na temat używania trybu ADB sideload. W tym artykule w rolach głównych weźmie udział Neffos Y5 ale bez problemu można te kroki przeprowadzić chyba na każdym innym smartfonie. Objawy usunięcia danych z partycji /system/ Usuwając dane z partycji /system/ pozbawiamy nasz telefon praktycznie całego oprogramowania. Taki smartfon nie może działa bez Androida czy innego systemu operacyjnego i w zasadzie urządzenie resetuje się co około minutę po włączeniu. W takim stanie po włączeniu smartfona, na ekranie można zobaczyć jedynie loga TP-LINK i Androida. Natomiast w logu systemowym mojego Debiana można zaobserwować poniższe komunikaty: kernel: usb 2-1.1: new high-speed USB device number 7 using ehci-pci kernel: usb 2-1.1: New USB device found, idVendor=2357, idProduct=0328 kernel: usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 kernel: usb 2-1.1: Product: Android kernel: usb 2-1.1: Manufacturer: Android kernel: usb 2-1.1: SerialNumber: 90169635 kernel: usb 2-1.1: USB disconnect, device number 6 Gdy dane z partycji /system/ zostały usunięte, to nie damy rady wgrać nic na smartfon przy pomocy narzędzia fastboot . Dlatego właśnie wymagany jest działający tryb recovery. Jeśli ten również z jakiegoś powodu nie działa, to niestety uwaliliśmy telefon na dobre i trzeba będzie go odesłać do serwisu. Działający TWRP recovery z trybem ADB sideload Dla osób, które nie wiedzą czym jest ADB sideload, wyjaśniam, że jest jeden z trybów pracy ADB. Standardowo przy pomocy adb możemy rozmawiać z systemem smartfona przez wysyłanie do niego różnych poleceń i w zasadzie możemy operować na takim urządzeniu mniej więcej tak jakbyśmy działali na zwyczajnym linux'ie. W przypadku trybu ADB sideload, te standardowe polecenia są nieaktywne ale mamy za to dostęp do komendy adb sideload , która jest w stanie wgrać świeży firmware z paczki update.zip . TWRP recovery począwszy od wersji 2.3 wspiera tryb ADB sideload. Dlatego też trzeba się upewnić, że mamy wgraną na smartfonie w miarę nową wersję tego oprogramowania. Gotowe obrazy TWRP recovery dla smartfonów Neffos (aktualnie C5 MAX, Y5 i Y5L) są dostępne w tym wątku. W przypadku, gdy mamy starszą wersję TWRP (< 2.3), no to niestety musimy zaktualizować to oprogramowanie wgrywając binarnie obraz przy pomocy dd mniej więcej w taki sam sposób jak zostało to opisane przy okazji odzyskiwania partycji /system/ (link we wstępie). ADB sideload i stock'owy recovery Nie jestem pewien czy ADB sideload działa na stock'owym recovery. Wiem, że smartfony oferują możliwość wgrywania pliku update.zip z trybu recovery ale nie wiem jak się zachowa system, gdy jedna lub kilka partycji ( /boot/ , /system/ , /recovery/ ) zostały w jakiś sposób zmienione. Dlatego to HOWTO dotyczy jedynie TWRP recovery, na którym pomyślnie udało mi się przetestować ADB sideload. Pozyskanie pliku update.zip zawierającego firmware smartfona ADB sideload potrzebuje pliku z obrazem firmware (ROM). Stock'owy ROM można pobrać ze strony TP-LINK/Neffos. Linki do działu download: Neffos Y5, Neffos Y5L, Neffos C5, Neffos C5 MAX. Pliki są w miarę duże i ważą około 1 GiB. Każdy z tych plików w nazwie zawiera oznaczenie modelu, np. C5_Max_TP702A , Y5L_TP801 . Tutaj mamy TP702 i TP801 oraz w przypadku tego pierwszego mamy również literkę A , która odpowiada za wersję geograficzną i w tym przypadku A jest dla smartfonów na rynku europejskim. Jak wgrać update.zip przez ADB sideload z poziomu TWRP recovery Pobrany firmware jest w postaci spakowanego pliku .zip . Tego pliku nie wypakowujemy. Zostanie on załadowany do pamięci RAM komputera, a jego zawartość w locie przesłana na smartfon bez potrzeby wgrywania tego pliku na flash urządzenia. Ta paczka zawiera nie tylko oprogramowanie, które jest wgrywane na partycję /system/ ale również obraz partycji /boot/ , za sprawą którego zostanie wygenerowany też świeży obraz partycji /recovery/ . Wszystkie te trzy partycje będą poddane procesowi flash'owania i po jego ukończeniu powinniśmy powrócić do stock'owego firmware. Pliki update.zip są podpisane cyfrowo i domyślnie nie damy rady ich wgrać przez TWRP recovery, bo zostanie nam wygenerowany poniższy błąd: sideload-host file size 968174348 block size 65536 Installing zip file '/sideload/package.zip' Verifying zip signature... I:read key e=3 hash=20 I:1 key(s) loaded from /res/keys I:comment is 1428 bytes; signature 1410 bytes from end I:TWFunc::Set_Brightness: Setting brightness control to 5 I:TWFunc::Set_Brightness: Setting brightness control to 0 I:failed to verify against RSA key 0 E:failed to verify whole-file signature I:Zip signature verification failed: 1 Zip signature verification failed! I:Signaling child sideload process to exit. I:Waiting for child sideload process to exit. sideload_host finished Problem jak widać dotyczy weryfikacji sygnatury pliku .zip . Musimy zatem poinstruować TWRP by nie weryfikował sygnatury. Możemy to zrobić odhaczając opcję ZIP signature verification w ustawieniach: Teraz możemy aktywować tryb ADB sideload przechodząc w Advanced => ADB Sideload: Czyszczenie cache jest opcjonalne ale można je zaznaczyć. Dane użytkownika i tak pozostaną nietknięte, zatem bez obaw. Niemniej jednak, trzeba pamiętać, że w przypadku modyfikacji partycji /system/ , np. przez Xposed, możemy napotkać dziwne problemy, które mogą uniemożliwić start lub też poprawne działanie systemu i wymagane będzie przeprowadzenie procesu Factory Reset. Po przesunięciu trzech strzałek na prawą stronę, ADB przełączy się w tryb sideload. Teraz wracamy na komputer i ładujemy plik update.zip przy pomocy poniższego polecenia (trzeba doinstalować narzędzie adb): # adb sideload /neffos/Y5_H10S100D00B20161207R1344_update.zip serving: '/neffos/Y5_H10S100D00B20161207R1344_update.zip' (~24%) Proces flash'owania plikiem update.zip zajmie dłuższą chwilę ale ostatecznie powinien zakończyć się powodzeniem: Uruchamiamy smartfon ponownie i ignorujemy przy tym informację, że to urządzenie nie mam zainstalowanego systemu operacyjnego (w zasadzie właśnie go zainstalowaliśmy): Po chwili powinien nam się załadować ekran z wyborem języka systemu: Po skonfigurowaniu systemu warto sprawdzić czy są dostępne jakieś aktualizacje. To na wypadek, gdybyśmy chcieli wgrać sobie jeszcze raz TWRP recovery czy przeprowadzać proces root Androida. W przypadku wprowadzenia jakichkolwiek zmian na partycji /boot/ , /system/ lub /recovery/ nie będziemy w stanie tych aktualizacji wgrać na smartfon i warto o tym pamiętać.
  14. Y50's firmware is for Y50 and not for Y5. You need only Y5 firmware, otherwise you'll brick the phone.
  15. So you've managed to fully recover your device based on my instructions?
  16. Krótki update co do tego USB OTG w Neffos C5 MAX. Udało mi się z poziomu TWRP zamontować zarówno pendrive jak i kartę SD przez czytnik kart SD. Czyli OTG będzie w pełni funkcjonalny pod alternatywnym ROM'em. Zastanawia mnie tylko czemu TP-LINK wyłączył obsługę dysków z tego OTG i zostawił tylko myszę i klawiaturę. Orientuje się może ktoś?
  17. Każdy z nas ma już raczej w swoim posiadaniu telefon, czy jego nieco bardziej zaawansowaną wersję określaną mianem smartfona. Te urządzenia to w zasadzie przenośne i do tego bardzo małe komputery, które umożliwiają nam komunikowanie się z osobami na całym świecie. Wykonywanie połączeń głosowych, przesyłanie SMS'ów/MMS'ów czy też korzystanie z Internetu w naszych komórkach od dawna jest już standardem i ciężko byłoby nam się obejść bez tej technologii obecnie. Problem w tym, że nasza komunikacja jest narażona na podsłuch. W przypadku Internetu większość połączeń jest już szyfrowana na linii dwóch klientów (E2E, End To End). Natomiast jeśli chodzi o telefony, to tutaj sprawa kuleje i to bardzo poważnie, bo w zasadzie nasze połączenia głosowe czy SMS'y są do wglądu dla każdych służb, które z jakiegoś powodu uznają, że mogą naruszać naszą prywatność. Jedyna opcja, która jest w stanie zabezpieczyć nas przed tego typu praktykami, to szyfrowanie rozmów. Tak się składa, że jest kilka aplikacji na Androida, które są w stanie realizować tego typu przedsięwzięcie. Jedną z nich jest darmowa i otwartoźródłowa aplikacja Signal, której się przyjrzymy nieco bliżej w tym artykule. Czym jest aplikacja Signal Aplikacją Signal zainteresowałem się głównie dlatego, że, jak można wyczytać na stronie producenta, ma ona poprawiać w znacznym stopniu prywatność naszej korespondencji, którą prowadzimy za pośrednictwem telefonu dzięki zastosowaniu Signal Protocol. Jeśli zamierzamy korzystać z aplikacji Signal, to musimy ją zainstalować na swoim smartfonie z Android/iOS. Tej aplikacji jesteśmy też w stanie używać na zwykłym desktopie, z tym, że tutaj musimy mieć zainstalowaną przeglądarkę Google Chrome. Każdy kontakt, z którym zamierzamy się w jakiś sposób komunikować, również musi zainstalować Signal. W przeciwnym razie nie damy rady zestawić zaszyfrowanego połączenia. Posiadanie odpowiedniego urządzenia i zainstalowanie aplikacji Signal to jednak nie wszystko. Na dobrą sprawę, Signal jedynie imituje standardową aplikację telefonu w naszych smartfonach i cały ruch, jaki generujemy za pomocą tej aplikacji, jest przesyłany tak na prawdę przez Internet. Wymagane zatem jest posiadanie połączenia sieciowego w komórce, np. pakiety danych 3G/LTE lub WiFi. Gdy wyjdziemy poza zasięg sieci bezprzewodowej, to nie będziemy w stanie połączyć się z żadnym z kontaktów, które mamy podpięte pod Signal. Oczywiście w dalszym ciągu będzie działało połączenie tradycyjne przez sieć GSM, które możemy wykorzystać do powiadomienia osoby, by przełączyła się ona na Signal. Jako, że Signal bazuje na połączeniu z globalną siecią Internet, to nie tylko wiadomości tekstowe jesteśmy w stanie przesyłać za jego pomocą. Za pośrednictwem tego komunikatora jesteśmy w stanie przesłać każdą informację, którą można zapisać w postaci binarnej. Innymi słowy, możemy nawiązywać połączenia głosowe, video i przesyłać pliki dowolnego formatu. W zasadzie Signal jest to taki Skype ale bardziej ficzerzasty i, co najważniejsze, wolny i otwartoźródłowy. Signal również eliminuje bariery dystansowe, przez co nie musimy się martwić o koszty roamingu i bez problemu możemy rozmawiać z osobami na całym świecie, o ile one i my mamy dostęp do Internetu. Przygotowanie aplikacji Signal do pracy Wiemy zatem, że do zestawienia kanału komunikacyjnego między dwoma kontaktami potrzebne nam są dwa urządzenia i zainstalowana aplikacja Signal na każdym z nich. Ja dysponuję jedynie smartfonami Neffos z system Android 5.1 (Lollipop) i 6.0 (Marshmallow) i na tych dwóch systemach ta aplikacja działa bez większego problemu: Warto w tym miejscu zaznaczyć, że aplikacja Signal może zostać zainstalowana spoza sklepu Google Play i działać nawet, gdy usługi Google w naszym smartfonie są wyłączone lub w ogóle nie są zainstalowane. Można zatem używać Signal bez Google, co bardzo cieszy. Po zainstalowaniu aplikacji Signal musimy z nią powiązać nasz numer telefonu, tj. zarejestrować go ale ta rejestracja nie jest rejestracją rozumianą w znaczeniu potocznym. Po prostu numer telefonu unikalnie identyfikuje dany kontakt i można ten fakt wykorzystać. Za każdym razem, gdy odinstalujemy aplikację Signal, krok rejestracji numeru (nawet tego samego) trzeba będzie powtórzyć. Dzieje się tak dlatego, że przy rejestracji numeru są tworzone klucze szyfrujące wykorzystywane do zabezpieczenia komunikacji. Niektóre z kluczy wykorzystywanych w Singal są generowane czasowo, np. do zaszyfrowania pojedynczej wiadomości, którą komuś przesyłamy. Natomiast jest też generowany jeden klucz, który jest przypisany do naszego urządzenia. Jeśli teraz reinstalujemy aplikację Signal, to ten klucz jest usuwany i trzeba go wygenerować jeszcze raz. Po zarejestrowaniu numeru, dobrze jest rzucić jeszcze okiem na opcje w ustawieniach. W szczególności zwróćmy uwagę na pozycję dotyczącą domyślnej aplikacji SMS, ochrony ekranu oraz potwierdzeń zmienionych kluczy naszych kontaktów. Czy Signal obsługuje smartfony bez numeru Numer telefonu, który podamy podczas rejestracji, będzie przypisany do aplikacji Signal i ten numer musi być prawidłowy z możliwością odbierania połączeń. Na niego dostaniemy wiadomość SMS z kodem potwierdzającym. Tylko jeden numer może być obsługiwany przez aplikację Signal w danym czasie, nawet jeśli nasz telefon posiada dual czy triple SIM. Może i do rejestracji jest wykorzystywany działający numer telefonu ale testując kilka ciekawych rzeczy udało mi się ustalić, że karta SIM z tym numerem nie musi być obecna w telefonie po zarejestrowaniu go w aplikacji. Możemy zatem korzystać z dwóch fizycznych smartfonów i przez jeden z nich będziemy się komunikować za pomocą aplikacji Signal, a drugi telefon posłuży nam do tradycyjnych rozmów i SMS'ów. Takie rozdzielenie ról może poprawić naszą prywatność, bo operator GSM w przypadku braku karty SIM może nie być w stanie ustalić położenia telefonu. Trzeba tylko pamiętać by wyłączyć moduł GSM, bo ten nawet w przypadku braku karty SIM w telefonie i tak umożliwia dzwonienie na numery alarmowe. Z kolei by móc je wykonywać, to z jakimś operatorem GSM jesteśmy zawsze połączeni. Moduł GSM można wyłączyć aktywując Tryb Samolotowy. Aplikacja Signal i Aero2 Posiadacze kart SIM od Aero2 są w stanie wykorzystać transfer oferowany w usłudze darmowego Internetu tego operatora. Może transfer nie przekracza 512 kbit/s (64 KiB/s) ale z tego co zauważyłem, to nawet taki słaby transfer nie stanowi większego wyzwania dla aplikacji Signal. Jesteśmy w stanie bez problemu rozmawiać głosowo oraz też przesyłać obraz video. Szacunkowo, transfer jaki jest zjadany przez aplikację Signal przy połączeniu video w czasie jednej minuty, to około 1,5 MiB do 2 MiB. Jest to zatem około 300 kbit/s (nieco ponad połowa prędkości oferowanej przez Aero2. Jako, że na kartach SIM od Aero2 nie mamy możliwości odbierania SMS'ów, to nie damy rady numeru tej karty zarejestrować w aplikacji Signal. Nie powinno to stanowić problemu, bo zawsze możemy sobie zakupić jakiegoś prepaida, by tylko taki numer otrzymać, a dalej możemy już jechać na Aero2. Jedyny problem przy korzystaniu z aplikacji Signal w przypadku Aero2, to naturalnie kod CAPTCHA, który trzeba wpisywać co godzinę. Nawet jeśli nie będziemy tego robić regularnie, to i tak zawsze możemy ten kod wpisać tuż przed nawiązaniem połączenia. Problematyczne za to może być odbieranie SMS'ów i rozmów, bo gdy ponownie trzeba będzie ten kod CAPTCHA wpisać, to do momentu aż to uczynimy będziemy offline i nikt z nami nie będzie w stanie się skontaktować. Zawsze też możemy wykupić sobie pakiet 3 GiB za 5 zł na miesiąc i zapomnieć o CAPTCHA. Weryfikacja kontaktów w aplikacji Signal Wysyłając w aplikacji Signal jakąś wiadomość tekstową, ta zostanie uprzednio zaszyfrowana i przesłana do drugiej osoby. Skąd jednak wiemy, że ta druga strona w ogóle otrzymała daną wiadomość oraz, że tylko ona ją odebrała? Każdy przecież może taką rozmowę przechwycić i podszyć się pod nasz kontakt. Signal ma naturalnie wbudowany mechanizm weryfikacji kontaktu, tj. czy numer, który my widzimy na ekranie naszego telefonu pasuje do tego, którym dysponuje nasz kontakt. Ten numer możemy zweryfikować ręcznie lub przez zeskanowanie kodu QR, który zostanie wyświetlony na ekranie telefonu tej drugiej osoby. Przykładowa weryfikacja numeru bezpieczeństwa wygląda mniej więcej tak: By przeprowadzić proces weryfikacji, trzeba te wszystkie wyżej wygenerowane cyferki sprawdzić pod kątem poprawności na drugim urządzeniu. Skanowanie kodu QR jest automatyczne i o wiele szybsze i bardziej dokładne. Jeśli weryfikacja zakończy się powodzeniem, to znaczy, że komunikacja jest należycie zabezpieczona i nikt nie jest w stanie jej podsłuchać. Jeśli nasz rozmówca w późniejszym czasie przeinstaluje aplikację Signal, to nam zostanie wyświetlony komunikat, że ten kontakt dysponuje innym kluczem szyfrującym, bo ten przecież został na nowo wygenerowany podczas ponownej instalacji programu. Tutaj trzeba jednak uważać, bo informacja o zmianie klucza może również oznaczać, że ktoś między nami i naszym kontaktem próbuje przechwycić rozmowę: W takim przypadku, niezbędna będzie weryfikacja numeru bezpieczeństwa w sposób opisany powyżej. Bez weryfikacji nie będziemy w stanie wymieniać wiadomości. Można oczywiście tę weryfikację pominąć ale wtedy możemy narazić się na podsłuch. Jak tylko zweryfikujemy numer, to przy wiadomości pojawi się znaczek podwójnego ptaszka oznaczającego, że wiadomość dodarła do odbiorcy oraz, że została ona z powodzeniem odczytana. Nie zawsze jednak pojawią się dwa ptaszki. Może też pojawić się tylko jeden. Jeden ptaszek oznacza, że wiadomość została poprawnie zaszyfrowana i wysłana do odbiorcy ale z racji, że nasz kontakt może być offline, to może się zdarzyć tak, że wiadomość nie została do niego dostarczona natychmiast. Jak tylko nasz kontakt podłączy się do Internetu, to ta wiadomość zostanie mu przekazana przez serwer. Po jej dostarczeniu i odczytaniu przez odbiorce, w logu rozmowy powinien pojawić się nam drugi ptaszek. Wykonywanie szyfrowanych rozmów głosowych Osoby, które chciałyby wykonać szyfrowaną rozmowę głosową, mogą ją zainicjować bez większego trudu. Po przejściu do historii wiadomości danego kontaktu, w prawym górnym rogu jest ikonka słuchawki z kłódką. Po jej przyciśnięciu rozpocznie się dzwonienie do tej osoby: Jeśli kontakt będzie offline, to cały czas na ekranie będzie widniał zapis "WYBIERANIE". Po jakiejś minucie od rozpoczęcia procesu dzwonienia i nie odebraniu połączenia przez drugą ze stron, proces ten zostanie automatycznie przerwany. W przypadku, gdy kontakt będzie online, to "WYBIERANIE" przejdzie w stan "DZWONI". A tak wygląda odbieranie rozmowy po drugiej stronie: Standardowo mamy aktywną tylko funkcję rozmowy głosowej ale nic nie stoi na przeszkodzie by włączyć kamerę selfie i zacząć przesyłać obraz i dźwięk jednocześnie. Szyfrowane archiwum wiadomości Wiadomości oraz wszystkie załączniki, które w nich zamieścimy, np. zdjęcia czy filmy, są przechowywane w lokalnej bazie danych na obu końcach połączenia, tj. u nas i u naszego kontaktu. Nawet jeśli nasz telefon oferuje szyfrowanie partycji /data/ , to i tak przydałoby się zaszyfrować niezależnie wszystkie konwersacje w aplikacji Signal. By tego typu szyfrowanie aktywować, musimy ustawić hasło w aplikacji. To hasło trzeba będzie wpisywać za każdym razem, gdy będziemy chcieli uzyskać dostęp do listy kontaktów. Naturalnie można ustawić czas przechowywania hasła w pamięci RAM, co sprawi, że przez pewien czas hasło nie będzie wymagane. Zaszyfrowaniu ulegnie też klucz użytkownika wykorzystywany do deszyfrowania wiadomości. Niemniej jednak, część informacji pozostanie niezaszyfrowana, np. lista kontaktów oraz czas przesyłanych wiadomości. Bezpieczeństwo bazy danych będzie zależeć od stanu skomplikowania hasła, które sobie wybierzemy. Dlatego też jeśli decydujemy się na zaszyfrowanie bazy, to podejdźmy do tego zagadnienia należycie i stosujmy długie hasła. Gdy baza zostanie zaszyfrowana, to w dalszym ciągu jesteśmy w stanie odbierać wiadomości ale nie możemy ich odczytać do momentu podania hasła. Rozmowy głosowe natomiast można bez problemu odbierać. Automatyczne kasowanie wiadomości Przechowywanie wiadomości przez zbyt długi okres czasu może nie być zalecane, zwłaszcza jeśli nie powinien ich nikt zobaczyć. Zwykle bardzo rzadko kasujemy wiadomości ręcznie i dlatego w aplikacji Signal możemy ustawić, by wiadomości z bazy były usuwane automatycznie, gdy licznik przekroczy, np. 100. Tego typu kasowanie wiadomości dotyczy jednak tylko lokalnej bazy danych. Przesłane wiadomości będą przechowywane zgodnie z polityką, którą wybrał nasz kontakt. Może się zatem zdarzyć tak, że z naszego archiwum dana wiadomość zniknęła ale w archiwum naszego kontaktu w dalszym ciągu ona figuruje. Mając na uwadze powyższe, w aplikacji Signal został zaimplementowany ciekawy mechanizm ustawiania czasu ważności dla wiadomości. W taki sposób jedna ze stron może ustawić, np. czas na 5 minut i po upłynięciu tego okresu, ta wiadomość zostanie automatycznie skasowana zarówno u tej osoby jak i u jej rozmówcy. Trzeba tylko zdawać sobie sprawę, że ten czas jest liczony od momentu wyświetlenia się wiadomości na ekranie. U nas ta wiadomość się pojawia w zasadzie natychmiast ale u naszego kontaktu może się ona nie wyświetlić przez dni czy tygodnie, jeśli użytkownik był offline przez dłuższy czas. W każdym razie, ten timeout można ustawić wybierając opcję "Znikające wiadomości" z menu kontaktu. Po wybraniu okresu czasu, obok numeru pojawi się zegar ze stosowną informacją: Wszystkie wiadomości które zostaną napisane przy widocznym zegarze znikną automatycznie po czasie, który wskazuje zegar. Po wysyłaniu wiadomości, każda z nich będzie miała ikonkę animowanej klepsydry, która jest w stanie wizualnie odliczać pozostały czas. Ten czas zostanie również ustawiony automatycznie na drugim końcu połączenia. Konfiguracja diody powiadomień Ciekawą opcją jest też konfiguracja diody powiadomień. W przypadku standardowych SMS'ów czy nieodebranych połączeń nie mamy zwykle możliwości konfiguracji tej diody, a konkretnie chodzi o sposób (częstotliwość) jej migania. Dodatkowo jeśli nasz smartfon posiada wielokolorową diodę, to możemy także wybrać sobie i kolor. Ochrona ekranu przed robieniem zrzutów Co ciekawe, gdy aplikacja Signal jest na pierwszym planie, nie działa możliwość robienia zrzutów ekranu. W sumie jest to ciekawa opcja. Jakby nie patrzeć może i nasze wiadomości są przesyłane i przechowywane w formie zaszyfrowanej ale można by spróbować je wydobyć robiąc właśnie zrzut ekranu. Tę opcję ochrony można naturalnie wyłączyć w ustawieniach samej aplikacji ale nie zalecałbym tego robić. Mając włączoną ochronę ekranu, żadna aplikacja ani nawet skrót przycisków Power + VolDown nie będą w stanie zrobić zrzutu ekranu. Oczywiście po zminimalizowaniu czy zamknięciu aplikacji Signal, skrin będzie można już wykonać bez większego problemu. Dla kogo jest przeznaczona aplikacja Signal Gdy pierwszy raz usłyszałem o aplikacji Signal, to od razu wiedziałem, że jest to jeden z tych programików, które zagoszczą w moim smartfonie na stałe. Nie chodzi tutaj o to, że moje rozmowy ze Snowden'em czy szefem NSA są jakoś ściśle tajne i nie powinny ujrzeć światła dziennego ale moim zdaniem sieć GSM to przeżytek. Popatrzmy jak obecnie wygląda komunikacja przez Internet. Możemy rozmawiać w bezpieczny sposób szyfrując połączenie między dwoma punktami i praktycznie nie ponosimy z tego tytułu żadnych opłat, tj. ani nie płacimy za szyfrowanie, ani też za czas połączenia bez znaczenia przy tym gdzie znajduje się nasz rozmówca. A jak wygląda sprawa w przypadku sieci GSM (pomińmy już kwestię braku przyzwoitych zabezpieczeń E2E)? Spróbujmy pogadać przez telefon z kimś z US czy Rosji. Ile nas wyniesie rachunek za tego typu konwersację? Nawet te paru minutowe rozmowy mogą kosztować fortunę. Teraz, gdy upowszechnieniu uległy sieci bezprzewodowe WiFi (min. darmowe hotspoty) i LTE (choć ten zależy od operatora GSM), to nasze komórki mogą być praktycznie non stop podłączone do Internetu. Nawet jeśli nie mamy w okolicy żadnego punktu WiFi czy BTS'a z LTE, to w dalszym ciągu możemy korzystać z 3G w postaci darmowego połączenia od Aero2 (gdyby tylko zlikwidowali ten wredny kod CAPTCHA) i koszt telefonu (rozmowy głosowe, SMS i MMS) zostaje zredukowany praktycznie do 0 i to przy jednoczesnym wzroście prywatności użytkowników. Jeśli zależy nam na prywatności, to już dziś powinniśmy sobie tę aplikację Signal zainstalować i zacząć namawiać do tego swoich znajomych.
  18. So type: # mount And see whether /system/ is mounted.
  19. Dziwne, że nie było robocika. Zawsze powinien być, przynajmniej u mnie zawsze był. Jak nie masz możliwości wbicia do trybu recovery (co się stało z tym przyciskiem VolUP?), to za dużo się nie da zdziałać. Jedyna opcja to ADB, z tym, że też nie wiem czy zadziała, bo powinien być włączony tryb debugowania USB. Dlatego musisz poszukać jak na windows zainstalować to narzędzie. Góglaj za "ADB android windows", bo ja nie używam windowsa, to ci zbytnio nie pomogę na tym systemie. Te pliki raczej są bezużyteczne, przynajmniej ja nie wiem co z nimi zrobić.
  20. No widać te 3 linijki żółtego tekstu ale odczytać tego się nie da. A podczas procesu aktualizacji nie pojawił ci się zielony robocik? Bez recovery nie da rady nic zrobić. Chyba, że jeszcze można by sprawdzić czy ADB zaskoczy w tym stadium log TP-LINK i Androida. Doinstaluj sobie ADB.
  21. It's better to stay with TWRP. Mount the system partition and see if there are any files. Go to the TWRP terminal and type: # mount /system # ls -al /system
  22. Jak przez OTA Update to nie powinno. Na pewno nie przerwałeś tego procesu w żaden sposób? Filmik zawsze się przyda, bo ja akurat tego modelu smartfona nie mam i nigdy w łapkach nie miałem, to za bardzo nawet nie wiem jak tam wygląda tryb recovery, a on się różni w przypadku tych telefonów co ja mam. Dasz radę wbić do tego trybu recovery, w sensie przez VolUp + Power? Tam jest log z operacji i powinno pisać co się stało.
  23. Tzn co dokładnie się stało? A pamiętasz jak ten telefon miał pokrojony flash? Chodzi o to ile w standardzie miał wolnego miejsca na partycji /system/ . A co tam pisało? VolUp i Power to tryb recovery, jeśli jednak update nie wszedł jak należy to prawdopodobnie rozjechała się partycja /system/ i trzeba będzie ją odtworzyć. Być może faktycznie zabrakło wolnego miejsca, a jeśli tak, to masz problem. Nic mi nie mówi ta struktura plików, co masz na fotce. Jak ty instalowałeś ten update? Przecież z poziomu Androida można bez problemu zaktualizować system via OTA Update.
  24. What did you do? Can you boot into TWRP?
  25. I don't really know what went wrong and I've never seen the error you got. I've damaged my phones many times, but I've always managed to recover them afterwards without problems. If you don't have a backup of the /system/ partition, you can simply flash TWRP again and format the /system/ partition, so it will remove the system from your phone completely. Then download the ZIP file from the TP-LINK/Neffos website and flash it via ADB sideload (here's some HowTo in Polish). But in order to do so, you have to use my TWRP recovery image. For now, there's a bug in the TWRP for Y5L, and you should disable screen timeout in settings and don't turn the screen off because it won't turn on again. Of course the bug concerns only the screen and the phone works fine, so you will be able to use ADB while in TWRP.