Czat

2024-01-26, 14:09:11
admin: forum pod tym linkiem: https://k5.2je.eu/index.php?action=forum

2024-01-26, 13:55:37
admin: Witam


Welcome to Quansheng UV-K5 Modding Fan Forum. Please login or sign up.

Lis 22, 2024, 08:02

Login with username, password and session length

Recent

K5tool - narzędzie do programowania (obsługuje bootloader 5.0)

Zaczęty przez admin, Lis 19, 2024, 00:08

Poprzedni wątek - Następny wątek

admin

Program K5TOOL to specjalistyczne narzędzie służące do obsługi i programowania radiotelefonów UV-K5/UV-5R. Oto jego główne funkcje:

1. Operacje na pamięci EEPROM:
- Odczyt danych z pamięci radia
- Zapis danych do pamięci radia
- Tworzenie kopii zapasowych ustawień radia

2. Zarządzanie firmware'm:
- Wgrywanie nowego oprogramowania (firmware) do radia
- Pakowanie i rozpakowywanie plików firmware
- Obsługa zarówno zaszyfrowanych jak i niezaszyfrowanych wersji firmware

3. Funkcje diagnostyczne:
- Sprawdzanie połączenia z radiem
- Monitorowanie stanu baterii
- Logowanie komunikacji między komputerem a radiem
- Tryb sniffera do diagnostyki protokołu komunikacji

4. Dodatkowe możliwości:
- Symulacja bootloadera radia (przydatne do testowania)
- Obsługa różnych wersji bootloadera
- Szczegółowe logowanie operacji dla celów diagnostycznych

Program jest szczególnie przydatny dla:
- Serwisantów radiów UV-K5/UV-5R
- Zaawansowanych użytkowników chcących modyfikować ustawienia radia
- Programistów rozwijających oprogramowanie dla tych modeli radiotelefonów

Jest to narzędzie wiersza poleceń, które działa zarówno na Windows, Linux jak i MacOS, wymagając jedynie środowiska Mono do działania (mono potrzebne na systemach innych niż Windows).

k5tool.png

Kod źródłowy dostepny na: https://github.com/qrp73/K5TOOL


K5TOOL
Narzędzie do odczytu/zapisu EEPROM i wgrywania firmware'u dla radia UV-K5/UV-5R

Stworzyłem to narzędzie, aby zapewnić bardziej niezawodny protokół z możliwościami logowania do pracy z radiem UV-K5.

To narzędzie pozwala na odczyt i zapis EEPROM, a także wgrywanie plików firmware'u. Zawiera komendy do pakowania i rozpakowywania obrazów firmware'u i obsługuje zarówno formaty szyfrowane, jak i nieszyfrowane.

Narzędzie obsługuje rozmiary firmware'u do 0xF000 (61,440) bajtów i zostało przetestowane z dużymi plikami firmware'u.

Dodatkowo narzędzie może być używane jako symulator bootloadera UV-K5, co jest przydatne do testowania oprogramowania do aktualizacji firmware'u.

Narzędzie obsługuje różne wersje bootloadera, w tym bootloader v5.00.01, używa wewnętrznie szyfrowania AES, więc nie musisz się tym przejmować.

Wymagania i zależności
Narzędzie wymaga środowiska Mono. Na Windows, Mono jest dostępne od razu po instalacji.

Na Linuxie możesz zainstalować pakiet Mono runtime za pomocą następującej komendy:


sudo apt install mono-runtime```

Instalacja
Pobieranie i rozpakowanie:

1. Pobierz plik ZIP z następującego linku: K5TOOL Releases https://github.com/qrp73/K5TOOL/releases/download/v1.8/K5TOOL-v1.8.zip
2. Rozpakuj pobrany plik

Uruchamianie na Linux/MacOS:
Na Linuxie lub MacOS może być konieczne ustawienie uprawnień wykonywania dla skryptu k5tool:

sudo chmod +x k5tool

Uruchamianie na Windows:
Na Windows możesz uruchomić narzędzie z konsoli jako K5TOOL.exe.

Kompilacja
Możesz skompilować kod źródłowy używając MonoDevelop (którego używam) lub Visual Studio.

Na Windows uruchom skompilowane narzędzie z wiersza poleceń jako K5TOOL.exe.
Na Linux/MacOS uruchom skompilowane narzędzie używając dostarczonego skryptu bash k5tool.

Logowanie
Narzędzie generuje szczegółowy log komunikacji zawierający wszystkie szczegóły błędów. Możesz zobaczyć log w pliku K5TOOL.log.

- Linie zaczynające się tagami rx i tx reprezentują surowe dane komunikacji wymieniane z radiem
- Linie zaczynające się tagami RX i TX zawierają odszyfrowane wiadomości
- Linie zaczynające się tagami recv i send pokazują przetworzone wiadomości protokołu

Jeśli wystąpi błąd, możesz znaleźć wszystkie szczegóły komunikacji i informacje o błędzie w logu.

Gdy narzędzie się uruchamia, tworzy kopię zapasową poprzedniego logu jako K5TOOL.log.bak i zaczyna pisać nowy plik K5TOOL.log. Stary plik K5TOOL.log.bak jest usuwany. Jeśli wystąpi błąd, upewnij się, że skopiowałeś plik K5TOOL.log do analizy przed ponownym uruchomieniem narzędzia, aby uniknąć utraty ważnych informacji.

Sprawdzanie połączenia

$ ./k5tool -hello
Opening /dev/ttyUSB0
Handshake...
  Firmware:        "2.01.32"
  HasCustomAesKey:  0
  IsPasswordLocked: 0
Done


Określanie nazwy portu szeregowego
Domyślnie narzędzie używa ostatniego portu szeregowego z dostępnej listy. Jednak jeśli chcesz określić inny port, możesz to zrobić dodając argument -port <nazwaPortu>:

Dla Linux/MacOS:

./k5tool -port /dev/ttyUSB1 -hello

Dla Windows:

./k5tool -port COM3 -hello

Możesz użyć opcji -port bez określania nazwy portu, aby wyświetlić listę wszystkich dostępnych portów szeregowych w systemie:

bash
$ ./k5tool -port
/dev/ttyS0
/dev/ttyUSB0


Uwaga: Niektóre porty mogą nie pojawić się na tej liście. Na przykład, wbudowany port szeregowy na Raspberry Pi może pokazywać się jako /dev/ttyS0, ale może wymagać użycia nazwy /dev/ttyAMA0, która może nie być wymieniona. Jest to specyficzne dla systemu operacyjnego.

Restartowanie radia i wyświetlanie wersji bootloadera

$ ./k5tool -reboot
Opening /dev/ttyUSB0
Handshake...
  Firmware:        "2.01.32"
  HasCustomAesKey:  0
  IsPasswordLocked: 0
Reboot device...
  Bootloader:      "2.00.06"
Done


Odczyt ADC baterii

$ ./k5tool -rdadc
Opening /dev/ttyUSB0
Handshake...
  Firmware:        "2.01.32"
  HasCustomAesKey:  0
  IsPasswordLocked: 0
Read ADC...
  Voltage:          2190
  Current:          0
Done

Uwaga: Wyświetlana wartość nie jest w Woltach, ale jest surowym odczytem z ADC.

Odczyt danych EEPROM z radia UV-K5

$ ./k5tool -rdee [<offset> <size>] [<fileName>]

Możesz określić opcjonalne parametry dla adresu początkowego (offset) i długości (size) odczytywanego bloku. Nazwa pliku jest również opcjonalna.

Domyślnie parametry mają następujące wartości:
- `<offset>` = 0x0000
- `<size>` = 0x2000
- `<fileName>` = 'eeprom-{hex-offset}-{hex-size}.raw'

Uwaga: Odczyt EEPROM powinien być wykonywany, gdy radio działa w trybie normalnym (nie mylić z trybem wgrywania). Przed uruchomieniem komendy odczytu/zapisu EEPROM:

1. Odłącz kabel
2. Wyłącz radio
3. Włącz radio ponownie (NIE PRZYTRZYMUJ przycisku PTT!)
4. Podłącz ponownie kabel i wykonaj komendę

To zapewnia, że radio jest w odpowiednim trybie do odczytu/zapisu danych EEPROM.

Odczyt pełnego zrzutu EEPROM

$ ./k5tool -rdee
Utworzy to pełną kopię zapasową w pliku o nazwie eeprom-0000-2000.raw.

Możesz określić inną nazwę pliku z opcją -rdee:

$ ./k5tool -rdee eeprom-full.raw

Odczyt kopii zapasowej kalibracji UV-K5

bash
$ ./k5tool -rdee 0x1e00 0x0200 eeprom-calib.raw


Zapis EEPROM z pliku

bash
$ ./k5tool -wree [<offset>] <fileName>


Zapis pełnej kopii zapasowej EEPROM do UV-K5 z pliku

$ ./k5tool -wree eeprom-0000-2000.raw

Wgrywanie obrazu firmware'u do radia
```
-wrflash <fileName>

Ta komenda wgrywa obraz firmware'u w standardowym formacie (zaszyfrowany i z sumą kontrolną). Sprawdza sumę kontrolną, jeśli suma kontrolna jest nieprawidłowa, firmware nie zostanie wgrany.

Uwaga: Ta komenda powinna być wykonywana w trybie wgrywania. Aby przełączyć się w tryb wgrywania:

1. Odłącz kabel
2. Wyłącz radio
3. Włącz radio przytrzymując przycisk PTT (Push-to-Talk). Dioda LED powinna się zaświecić
4. Podłącz ponownie kabel i wykonaj komendę

Wgrywanie surowego (odszyfrowanego) obrazu firmware'u do radia

-wrflashraw [<version>] <fileName>

Ta komenda służy do zapisywania firmware'u w formacie surowym (as is), co oznacza, że możesz użyć pliku binarnego powstałego w wyniku kompilacji.

Rozpakowywanie obrazu firmware'u

$ ./k5tool -unpack <fileName> [<outputName>]

Pakowanie obrazu firmware'u

$ ./k5tool -pack <version> <fileName> [<outputName>]

Symulator bootloadera UV-K5

$ ./k5tool -port /dev/ttyUSB1 -simula

Tryb sniffera protokołu

$ ./k5tool -sniffer
Może być używany do celów diagnostycznych. W tym trybie narzędzie nie wysyła niczego, tylko monitoruje pakiety na linii RxD w pętli i wyświetla odszyfrowane pakiety w konsoli.

Parsowanie danych szesnastkowych

$ ./k5tool -parse <hex-data>
$ ./k5tool -parse-plain <hex-data>


Zobacz przykłady w oryginalnej dokumentacji dla dokładnego formatu wyjściowego tych komend.