ݺߣ

ݺߣShare a Scribd company logo
Drugie życie elektroniki
Projekt: Wojciech Macek
Mówi: Wojciech Żmuda
Agenda
● Po co to spotkanie
● Router TP-Link WR740N
● OpenWRT
● Jak działa PCIe
● Modyfikacje sprzętowe
● Wyniki testów
● Q&A
Router TP-Link WR740N
● Jeden z najtańszych modeli
● Parametry:
○ 4xLAN 100Mb/s
○ WiFi AP 150Mb/s
○ Brak USB
źródło: TP-Link
Router TP-Link WR740N
●
źródło:
OpenWRT Wiki
Co w środku piszczy
● Router jest wyposażony w procesor AR7240 (zdjęcie z dokumentacji)
Konsola szeregowa
● Do dalszych prac wygodnie jest posiadać konsolę szeregową
● Konieczne jest wlutowanie się do PCB w punktach
oznaczonych jako TX i RX
● Przejściówka USB pozwala na komunikację 11500 baud
źródło:
OpenWRT Wiki
Pierwsze uruchomienie
U-Boot 1.1.4 (Mar 8 2010 - 10:29:42)
AP91 (ar7240) U-boot
DRAM:
sri
#### TAP VALUE 1 = 9, 2 = a
32 MB
id read 0x100000ff
flash size 4194304, sector count = 64
Flash: 4 MB
Using default environment
In: serial
Out: serial
Err: serial
Net: ag7240_enet_initialize...
No valid address in Flash. Using fixed address
: cfg1 0xf cfg2 0x7014
eth0: 00:03:7f:09:0b:ad
eth0 up
No valid address in Flash. Using fixed address
: cfg1 0xf cfg2 0x7214
eth1: 00:03:7f:09:0b:ad
ATHRS26: resetting s26
ATHRS26: s26 reset done
eth1 up
eth0, eth1
Autobooting in 1 seconds
## Booting image at 9f020000 ...
Uncompressing Kernel Image ...
Cel
● Nadać routerowi drugie życie
○ Zmienić oprogramowanie na otwarte
○ Wykorzystać interfejsy procesora (USB, PCIe)
OpenWRT
● Otwarte oprogramowanie gotowe do zainstalowania
● Bazuje na systemie Linux
● System “paczek” podobny do innych dystrybucji
● Lekki, wystarczy 4MB Flash i 32MB RAM
Instalacja OpenWRT
● Projekt OpenWRT zawiera gotowe obrazy
● Według instrukcji potrzeba:
○ ściągnąć gotowy obraz “factory” ze strony OpenWRT
○ poprzez interfejs WWW routera użyć obrazu jako
“firmware update”
ERROR !
Instalacja - problem
● Producent zablokował możliwość wgrania obrazu przez
HTTP, konieczne ładowanie Flash z poziomu U-Boota
> setenv serverip 192.168.1.234
> tftpboot 0x81000000 firm.bin
> erase 0x9f020000 +0x7c0000
> cp.b 0x81000000 0x9f020000 0x7c0000
> bootm 0x9f020000
Start OpenWRT
● Po zainstalowaniu OpenWRT możemy się zalogować
wojtek@wojtek-laptop ~ $ ssh -l root 192.168.1.133
BusyBox v1.23.2 (2015-07-25 15:09:46 CEST) built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
CHAOS CALMER (15.05, r46767)
-----------------------------------------------------
* 1 1/2 oz Gin Shake with a glassful
* 1/4 oz Triple Sec of broken ice and pour
* 3/4 oz Lime Juice unstrained into a goblet.
* 1 1/2 oz Orange Juice
* 1 tsp. Grenadine Syrup
-----------------------------------------------------
root@OpenWrt:~#
root@OpenWrt:~# uname -a
Linux OpenWrt 3.18.20 #1 Fri Sep 4 21:55:57 CEST 2015 mips GNU/Linux
Pierwszy pomysł
Wykorzystać PCIe do bardziej
ambitnych celów (np. SATA)
PCIe - co to jest
● Standardowy interfejs komputerowy, następca PCI
● Używany do szybkich kart rozszerzeń
● Zaawansowany technicznie
○ Mały narzut na przetwarzanie przez OS (w
przeciwieństwie do USB)
○ Szybki
○ Niska latencja
PCIe - jak wygląda
● Transmisja za pomocą par
ścieżek (różnicowych) o
kontrolowanej impedancji
● Minimalna konfiguracja “x1”
wymaga:
○ Pary RX
○ Pary TX
○ Pary sygnału zegarowego CLK
grafika Tracy Wilson
PCIe - gdzie to jest
● Konieczne jest zlokalizowanie linii PCIe na
płycie.
● Założenia:
○ Ścieżki powinny łączyć CPU z modułem WiFi
○ Szukamy 3 par różnicowych na PCB (ścieżki
idące blisko siebie, otoczone masą)
○ Lane’y PCIe TX/RX są łączone przez
kondensatory
○ Para CLK może być łączona przez kondensatory,
albo rezystory albo bezpośrednio
Źródło: Collin Warwick, PCIe Express Workshop, Agilent Technologies
/Agilent/ads-workshop-on-pci-expressr-presentation
Router TP-Link WR740N
●
źródło:
OpenWRT Wiki
PCIe - gdzie to jest
PCIe - gdzie to jest
źródło:
Atheros
PCIe - gdzie to jest
Dopasowanie impedancji
● PCIe pracuje z częstotliwością 2.5GHz !!
● W transmisji sygnału po płytce PCB ujawniają się
zjawiska falowe (odbicia, przesłuchy itp.)
● W przypadku PCIe poniższe muszą być spełnione
○ Impedancje źródła, linii i odbiornika muszą
być równe!
○ Długość ścieżek w jednym lane’ie musi być
równa co do 0.1mm!
○ PCIe jest magistralą punkt-punkt
Dopasowanie impedancji
Jakość sygnału PCIe
pokazują tzw. “eye diagram”.
U góry - impedancja zgodna.
U dołu - impedancja
niedopasowana.
Ilustracje z przykładów firmy
Agilent.
Jak dobrać się do PCIe
Kolejnym krokiem jest wykorzystanie interfejsu PCIe.
Biorąc pod uwagę poprzednie wiadomości, zdecydowano by:
● Kondensatory postawić “pionowo”, odłączając linie
PCIe do karty WiFi
● Do kondensatorów przylutować kabel o impedancji
różnicowej 100R
● Przylutować kabel do zewnętrznego gniazda PCIe
Jak dobrać się do PCIe
Problem #1:
Kondensatory są małe (rozmiar 0402, 1.0x0.5mm).
Rozwiązanie:
Duża ilość topnika i lutownica na gorące powietrze.
Jak dobrać się do PCIe
Problem #2:
Linie PCIe muszą mieć impedancję różnicową 100R. Czego
użyć jako przewodu?
Rozwiązanie:
??
Jak dobrać się do PCIe
Problem #2:
Linie PCIe muszą mieć impedancję
różnicową 100R. Czego użyć jako
przewodu?
Rozwiązanie:
Kabel SATA
źródło:
Accura webpage
Efekt - lutowanie
Pierwsze uruchomienie
root@OpenWRT:~#
root@OpenWRT:~#
root@OpenWRT:~# lspci
-ash: lspci: not found
root@OpenWRT:~#
Pierwsze uruchomienie
root@OpenWRT:~# opkg update
root@OpenWRT:~# opkg install pciutils
root@OpenWRT:~# lspci
01:00.0 SATA controller: JMicron Technology
Corp. JMB362/JMB363 Serial ATA Controller (rev
03)
root@OpenWRT:~#
Kilka testów
Transfer do/z dysku:
root@OpenWRT:~#time dd if=~/test.bin bs=1M
of=/dev/null
100+0 records in
100+0 records out
real 0m 9.17s
root@OpenWRT:~#
Prędkość odczytu: 10.91 MB/s
Kilka testów
Dostęp do danych przez FTP:
Prędkość odczytu: 9.3 MB/s
Kilka testów
Dostęp do danych przez SFTP:
Prędkość odczytu: 1.5 MB/s
Możliwości rozwoju
Kolejną z opcji eksploracji jest uruchomienie USB2.0
(https://wiki.openwrt.org/toh/tp-link/tl-wr741nd)
Q&A
Pytania?

More Related Content

Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018

  • 1. Drugie życie elektroniki Projekt: Wojciech Macek Mówi: Wojciech Żmuda
  • 2. Agenda ● Po co to spotkanie ● Router TP-Link WR740N ● OpenWRT ● Jak działa PCIe ● Modyfikacje sprzętowe ● Wyniki testów ● Q&A
  • 3. Router TP-Link WR740N ● Jeden z najtańszych modeli ● Parametry: ○ 4xLAN 100Mb/s ○ WiFi AP 150Mb/s ○ Brak USB źródło: TP-Link
  • 5. Co w środku piszczy ● Router jest wyposażony w procesor AR7240 (zdjęcie z dokumentacji)
  • 6. Konsola szeregowa ● Do dalszych prac wygodnie jest posiadać konsolę szeregową ● Konieczne jest wlutowanie się do PCB w punktach oznaczonych jako TX i RX ● Przejściówka USB pozwala na komunikację 11500 baud źródło: OpenWRT Wiki
  • 7. Pierwsze uruchomienie U-Boot 1.1.4 (Mar 8 2010 - 10:29:42) AP91 (ar7240) U-boot DRAM: sri #### TAP VALUE 1 = 9, 2 = a 32 MB id read 0x100000ff flash size 4194304, sector count = 64 Flash: 4 MB Using default environment In: serial Out: serial Err: serial Net: ag7240_enet_initialize... No valid address in Flash. Using fixed address : cfg1 0xf cfg2 0x7014 eth0: 00:03:7f:09:0b:ad eth0 up No valid address in Flash. Using fixed address : cfg1 0xf cfg2 0x7214 eth1: 00:03:7f:09:0b:ad ATHRS26: resetting s26 ATHRS26: s26 reset done eth1 up eth0, eth1 Autobooting in 1 seconds ## Booting image at 9f020000 ... Uncompressing Kernel Image ...
  • 8. Cel ● Nadać routerowi drugie życie ○ Zmienić oprogramowanie na otwarte ○ Wykorzystać interfejsy procesora (USB, PCIe)
  • 9. OpenWRT ● Otwarte oprogramowanie gotowe do zainstalowania ● Bazuje na systemie Linux ● System “paczek” podobny do innych dystrybucji ● Lekki, wystarczy 4MB Flash i 32MB RAM
  • 10. Instalacja OpenWRT ● Projekt OpenWRT zawiera gotowe obrazy ● Według instrukcji potrzeba: ○ ściągnąć gotowy obraz “factory” ze strony OpenWRT ○ poprzez interfejs WWW routera użyć obrazu jako “firmware update” ERROR !
  • 11. Instalacja - problem ● Producent zablokował możliwość wgrania obrazu przez HTTP, konieczne ładowanie Flash z poziomu U-Boota > setenv serverip 192.168.1.234 > tftpboot 0x81000000 firm.bin > erase 0x9f020000 +0x7c0000 > cp.b 0x81000000 0x9f020000 0x7c0000 > bootm 0x9f020000
  • 12. Start OpenWRT ● Po zainstalowaniu OpenWRT możemy się zalogować wojtek@wojtek-laptop ~ $ ssh -l root 192.168.1.133 BusyBox v1.23.2 (2015-07-25 15:09:46 CEST) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- CHAOS CALMER (15.05, r46767) ----------------------------------------------------- * 1 1/2 oz Gin Shake with a glassful * 1/4 oz Triple Sec of broken ice and pour * 3/4 oz Lime Juice unstrained into a goblet. * 1 1/2 oz Orange Juice * 1 tsp. Grenadine Syrup ----------------------------------------------------- root@OpenWrt:~# root@OpenWrt:~# uname -a Linux OpenWrt 3.18.20 #1 Fri Sep 4 21:55:57 CEST 2015 mips GNU/Linux
  • 13. Pierwszy pomysł Wykorzystać PCIe do bardziej ambitnych celów (np. SATA)
  • 14. PCIe - co to jest ● Standardowy interfejs komputerowy, następca PCI ● Używany do szybkich kart rozszerzeń ● Zaawansowany technicznie ○ Mały narzut na przetwarzanie przez OS (w przeciwieństwie do USB) ○ Szybki ○ Niska latencja
  • 15. PCIe - jak wygląda ● Transmisja za pomocą par ścieżek (różnicowych) o kontrolowanej impedancji ● Minimalna konfiguracja “x1” wymaga: ○ Pary RX ○ Pary TX ○ Pary sygnału zegarowego CLK grafika Tracy Wilson
  • 16. PCIe - gdzie to jest ● Konieczne jest zlokalizowanie linii PCIe na płycie. ● Założenia: ○ Ścieżki powinny łączyć CPU z modułem WiFi ○ Szukamy 3 par różnicowych na PCB (ścieżki idące blisko siebie, otoczone masą) ○ Lane’y PCIe TX/RX są łączone przez kondensatory ○ Para CLK może być łączona przez kondensatory, albo rezystory albo bezpośrednio
  • 17. Źródło: Collin Warwick, PCIe Express Workshop, Agilent Technologies /Agilent/ads-workshop-on-pci-expressr-presentation
  • 19. PCIe - gdzie to jest
  • 20. PCIe - gdzie to jest źródło: Atheros
  • 21. PCIe - gdzie to jest
  • 22. Dopasowanie impedancji ● PCIe pracuje z częstotliwością 2.5GHz !! ● W transmisji sygnału po płytce PCB ujawniają się zjawiska falowe (odbicia, przesłuchy itp.) ● W przypadku PCIe poniższe muszą być spełnione ○ Impedancje źródła, linii i odbiornika muszą być równe! ○ Długość ścieżek w jednym lane’ie musi być równa co do 0.1mm! ○ PCIe jest magistralą punkt-punkt
  • 23. Dopasowanie impedancji Jakość sygnału PCIe pokazują tzw. “eye diagram”. U góry - impedancja zgodna. U dołu - impedancja niedopasowana. Ilustracje z przykładów firmy Agilent.
  • 24. Jak dobrać się do PCIe Kolejnym krokiem jest wykorzystanie interfejsu PCIe. Biorąc pod uwagę poprzednie wiadomości, zdecydowano by: ● Kondensatory postawić “pionowo”, odłączając linie PCIe do karty WiFi ● Do kondensatorów przylutować kabel o impedancji różnicowej 100R ● Przylutować kabel do zewnętrznego gniazda PCIe
  • 25. Jak dobrać się do PCIe Problem #1: Kondensatory są małe (rozmiar 0402, 1.0x0.5mm). Rozwiązanie: Duża ilość topnika i lutownica na gorące powietrze.
  • 26. Jak dobrać się do PCIe Problem #2: Linie PCIe muszą mieć impedancję różnicową 100R. Czego użyć jako przewodu? Rozwiązanie: ??
  • 27. Jak dobrać się do PCIe Problem #2: Linie PCIe muszą mieć impedancję różnicową 100R. Czego użyć jako przewodu? Rozwiązanie: Kabel SATA źródło: Accura webpage
  • 30. Pierwsze uruchomienie root@OpenWRT:~# opkg update root@OpenWRT:~# opkg install pciutils root@OpenWRT:~# lspci 01:00.0 SATA controller: JMicron Technology Corp. JMB362/JMB363 Serial ATA Controller (rev 03) root@OpenWRT:~#
  • 31. Kilka testów Transfer do/z dysku: root@OpenWRT:~#time dd if=~/test.bin bs=1M of=/dev/null 100+0 records in 100+0 records out real 0m 9.17s root@OpenWRT:~# Prędkość odczytu: 10.91 MB/s
  • 32. Kilka testów Dostęp do danych przez FTP: Prędkość odczytu: 9.3 MB/s
  • 33. Kilka testów Dostęp do danych przez SFTP: Prędkość odczytu: 1.5 MB/s
  • 34. Możliwości rozwoju Kolejną z opcji eksploracji jest uruchomienie USB2.0 (https://wiki.openwrt.org/toh/tp-link/tl-wr741nd)