Нетобзор - форум про интернет

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Автор Тема: qtools-набор инструментов для работы с flash модемов на чипсете qualcomm  (Прочитано 216660 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

sand_rey

  • Модератор
  • *
  • Благодарность: +165/-0
  • Оффлайн Оффлайн
  • Сообщений: 575
  • Модем: MiFi8000
  • Провайдер: lifecell
  • Тариф: Гаджет роутер
  • Антенна: Antex ZETA-F mimo

ENPRG EC315  MDM6600
qcommand  -p24 -c "n"
* 000 NAND_FLASH_CMD         = 001b4000
* 004 NAND_ADDR0             = 748f1307
* 008 NAND_ADDR1             = 001b4000
* 00c NAND_CHIP_SELECT       = 748f1307
* 010 NANDC_EXEC_CMD         = 001b4000
* 014 NAND_FLASH_STATUS      = 748f1307
* 018 NANDC_BUFFER_STATUS    = 001b4000
* 020 NAND_DEV0_CFG0         = 001b4000
* 024 NAND_DEV0_CFG1         = 748f1307
* 028 NAND_DEV0_ECC_CFG      = 001b4000
* 040 NAND_FLASH_READ_ID     = 001b4000
* 044 NAND_FLASH_READ_STATUS = 748f1307
* 048 NAND_FLASH_READ_ID2    = 001b4000
* 064 FLASH_MACRO1_REG       = 748f1307
* 070 FLASH_XFR_STEP1        = 001b4000
* 074 FLASH_XFR_STEP2        = 748f1307
* 078 FLASH_XFR_STEP3        = 001b4000
* 07c FLASH_XFR_STEP4        = 748f1307
* 080 FLASH_XFR_STEP5        = 001b4000
* 084 FLASH_XFR_STEP6        = 748f1307
* 088 FLASH_XFR_STEP7        = 001b4000
* 0a0 FLASH_DEV_CMD0         = 001b4000
* 0a4 FLASH_DEV_CMD1         = 748f1307
* 0a8 FLASH_DEV_CMD2         = 001b4000
* 0ac FLASH_DEV_CMD_VLD      = 748f1307
* 0d0 FLASH_DEV_CMD3         = 001b4000
* 0d4 FLASH_DEV_CMD4         = 748f1307
* 0d8 FLASH_DEV_CMD5         = 001b4000
* 0dc FLASH_DEV_CMD6         = 748f1307
* 0e8 NAND_ERASED_CW_DET_CFG = 001b4000
* 0ec NAND_ERASED_CW_DET_ST  = 748f1307
* 0f0 EBI2_ECC_BUF_CFG       = 001b4000
Для продолжения нажмите любую клавишу . . .

qcommand  -p24 -i -k4 -c "n"
Отсылка hello...ok
 ! ** Загрузчик не поддерживает команду 05 - загрузчик не содержит патча!!!! **


* 000 NAND_FLASH_CMD         = 00000034
* 004 NAND_ADDR0             = 00810000
* 008 NAND_ADDR1             = 00000000
* 00c NAND_CHIP_SELECT       = 00000002
* 010 NANDC_EXEC_CMD         = 00000000
* 014 NAND_FLASH_STATUS      = 00000020
* 018 NANDC_BUFFER_STATUS    = ffff0000
* 020 NAND_DEV0_CFG0         = aa5400c0
* 024 NAND_DEV0_CFG1         = 0004745e
* 028 NAND_DEV0_ECC_CFG      = 00000000
* 040 NAND_FLASH_READ_ID     = 5500b1ad
* 044 NAND_FLASH_READ_STATUS = 00000000
* 048 NAND_FLASH_READ_ID2    = 00000000
* 064 FLASH_MACRO1_REG       = 00000000
* 070 FLASH_XFR_STEP1        = 20002180
* 074 FLASH_XFR_STEP2        = 21806198
* 078 FLASH_XFR_STEP3        = 21e0a180
* 07c FLASH_XFR_STEP4        = 61f0e000
* 080 FLASH_XFR_STEP5        = a1e00000
* 084 FLASH_XFR_STEP6        = 21800000
* 088 FLASH_XFR_STEP7        = e000c000
* 0a0 FLASH_DEV_CMD0         = 1080d060
* 0a4 FLASH_DEV_CMD1         = f00f3000
* 0a8 FLASH_DEV_CMD2         = f0ff7090
* 0ac FLASH_DEV_CMD_VLD      = 0000001d
* 0d0 FLASH_DEV_CMD3         = f0ff7090
* 0d4 FLASH_DEV_CMD4         = 00800000
* 0d8 FLASH_DEV_CMD5         = 00f30094
* 0dc FLASH_DEV_CMD6         = 000040e0
* 0e8 NAND_ERASED_CW_DET_CFG = 00000003
* 0ec NAND_ERASED_CW_DET_ST  = 00000033
* 0f0 EBI2_ECC_BUF_CFG       = 000001ff
Для продолжения нажмите любую клавишу . . .

qrflash -p24 -s@ -x
qcommand -p24 -c "c 0b"
 Загрузчик не поддерживает команду 05:

 cmdbuf: 00000000: 05 00 00 00 40 1b 0b 00 08 00                    *....@.....
     *

 ответ : 00000000: 7e 0e 53 69 6d 70 6c 65 20 77 72 69 74 65 20 6e  *~.Simple wr
ite n*
00000010: 6f 74 20 61 6c 6c 6f 77 65 64 0a 95 9d 7e        *ot allowed...~  *



 ---- ответ ---
00000000: 7e 0c 14 3a 7e                                   *~..:~           *

Для продолжения нажмите любую клавишу . . .
Записан

mr.drone

  • Гость

а гуру
на отдыхе, до середины мая.

И я буду ждать его мудрых советов, ибо если в результате моих криворуких действий модем перестанет определяться, надежды на его возрождение не останется.
А пока опишу симптомы. Модем mf667 завис в режиме загрузки. Попытка оживить его через qpst успеха не принесла. Есть файлы, выдранные из прошивки. На Hello от утилиты возвращает ошибку.
Думаю, нам нужен фуллфлеш в формате .obb и qwdirect (на 4й стр. есть команда). Но это всё догадки.
В наличии Windows версия.
А какую версию форточек используете? Читал, что для работы с железом оч. рекомендуется ХР. А модем я шил на семерке, результат налицо...
« Последнее редактирование: 12 Мая 2015, 21:04:28 от sandrey »
Записан

geoworld

  • Гость

а гуру
на отдыхе, до середины мая.

И я буду ждать его мудрых советов, ибо если в результате моих криворуких действий модем перестанет определяться, надежды на его возрождение не останется.
А пока опишу симптомы. Модем mf667 завис в режиме загрузки. Попытка оживить его через qpst успеха не принесла. Есть файлы, выдранные из прошивки. На Hello от утилиты возвращает ошибку.
Думаю, нам нужен фуллфлеш в формате .obb и qwdirect (на 4й стр. есть команда). Но это всё догадки.
В наличии Windows версия.
А какую версию форточек используете? Читал, что для работы с железом оч. рекомендуется ХР. А модем я шил на семерке, результат налицо...


Драйвер тоже устанавливали редактированием INF или у вас классически ZTE Diagnostics Interface сам определился?
« Последнее редактирование: 12 Мая 2015, 21:05:00 от sandrey »
Записан

mr.drone

  • Гость

классически ZTE Diagnostics Interface сам определился?
Нет, чудес не бывает :-/. Определился как ZTE CDMA Technologies MSM, и если после редактирования INF-файла он должен был подхватиться автоматом(после выбора папки), то этого не произошло. Я сам выбрал нужный драйвер))
Записан

geoworld

  • Гость


Получилось:


C:\qtools>qcommand -k1 -p34 -c"i"

 Отсылка hello...ok
 Чипсет: MDM8200  (a0a00000)
 Флеш-память: Hynix HYNIX_HY27SF081G2A, NAND 128MiB 1,8V 8-bit
 Версия протокола: 3
 Максимальный размер пакета: 1024 байта
 Размер сектора: 512 байт
 Размер страницы: 2048 байт (4 секторов)
 Размер OOB: 64 байт
 Тип ECC: R-S, 4 бит
 Общий размер флеш-памяти = 1024 блоков (128 MB)

До этого надо было выполнить:

qdload -p34 -k1 -a58020000 -d10 loaders/ENPRG8200p.bin
Записан

forth32

  • Гость

Так. Я вернулся с отдыха, и понемногу могу включаться в процесс. И первое, что хочу заметить для всех вышеотписавшихся экспериментатров.

Где-то месяц назад мы принципиально изменили логику работы утилит. Больше команды 05 нет, есть только команда 11, выполняющая произвольный код, загруженный вместе с командой. Поэтому все эти надписи "команда 05 не поддерживается" говорят  том, что вы пользуетесь старыми версиями утилит. Новые версии лежат в репозитории https://github.com/forth32/qtools, ветка master. Там же лежат и патченные загрузчики нового поколения. И советую выкинуть нафиг все старье, которым сейчас пользуетесь, и взять новые нормальные версии.

В новых версиях утилит адрес загрузки загрузчика, и тип чипсета определяются утилитами автоматически. То есть никаких ключей -a (в qdload) и -k (во всех утилитах) указывать больше не надо. qdload берет адрес и тип чипсета на основе информации, вшитой в сам файл загрузчика. А остальные утилиты делают специальный запрос к загрузчику с помощью команды 11 и получают тип чипсета.

Насчет модема 667 - я уже не раз его полностью восстанавливал, в том числе и после полного стирания флешки. Просто записью образов убитых разделов с помощью qwdirect. Можно и фуллдамп записать таким же образом. Для этого модема jtag уже совершенно неактуален.
Записан

test

  • Гость

forth32, интересует такой момент. есть два модема. проц 6600. твой загрузчик enprg6695p.
оба модема читаются и пишутся жтаг-ом. первый исправен, второй нет - постоянно в qdload-е.
в первом модеме загрузчик отрабатыает, но новое устройство после ОК в диспетчере не появляется.
второй модем тоже отрабатывает с ОК, но в диспетчере через гораздо больше чем обычно секунд появляется неизвестное устройство.
можно ли говорить, что в первом модеме не происходит корректной инициализации железа после отработки загрузчика, а во втором случае само железо модема неисправно? подозрения на железо очень большие, так как неисправность появилась после перетыка модема в непонятно каком usb разъеме.
Записан

forth32

  • Гость

второй модем тоже отрабатывает с ОК, но в диспетчере через гораздо больше чем обычно секунд появляется неизвестное устройство.
Я, как старый линуксоид, практически не разбираюсь в ОС семейства windows. Пэтому уточни - что значит неизвестное устройство? Система не смогла прочитать дескриптор USB?

Если первый модем гарантированно исправен, а загрузчик на нем виснет, то, видимо, загрузчик нерабтоспособен. Например, адрес загрузки у него не 20012000. Или вообще он к этому чипсету не подходит - насколько я помню, тут говорили, что он предназначен для MDM6200.
Записан

test

  • Гость

не написал же главное. модели модемов разные. одинаковые в них только процики 6600 и флешки хайникс.
в первом модеме, который исправен, nprg6695p работает, флешку отдает, но не работает алгоритм чтения - мусор, как я написал парой страниц раньше. enprg ребутит порт и больше он в системе не появляется.
во втором неисправном модеме, который постоянно висит в пбл, после отработки enprg6695p порт ребутится и появляется неизвестное у-во, в котором нет вид-пид.
Записан

sand_rey

  • Модератор
  • *
  • Благодарность: +165/-0
  • Оффлайн Оффлайн
  • Сообщений: 575
  • Модем: MiFi8000
  • Провайдер: lifecell
  • Тариф: Гаджет роутер
  • Антенна: Antex ZETA-F mimo

Вот еще загрузчики,похоже для MDM6600,но не проверял.Когда-то выдрал из апдейтера Gobi 3000 Dell Wireless 5630 (EVDO-HSPA)
адреса те же
nprg - 00800000
enprg - 20012000
Записан

forth32

  • Гость

Вот еще загрузчики,похоже для MDM6600,но не проверял

А проверить сможешь, если я их пропатчу?
Записан

geoworld

  • Гость

Итак, следующий круг ада. Модем успешно запорот. Выкладываю в назедание следующим поколениям поднимателей:)

C:\qtools>qwdirect -p34 -k1 -le -fi -b0 RawFull_MF667_Megafon_Unlock_128mb.bin

 Запись из файла RawFull_MF667_Megafon_Unlock_128mb.bin, стартовый блок 000, раз
мер 00e
 Режим записи: сырой образ без расчета ЕСС
 Формат данных: 512+16
 Блок: 000d   Страница: 3f

На всякий случай: модем билайновский, попытка прошивки full raw flasheм Мегафон.

Далее процесс без объяснений прерывается и больше модем не определяется, даже ZTE Diagnostics Interface. Посоветуйте, какой тестпоинт замкнуть или напряжение подать, чтобы стал определяться, видел подобный фокус с более ранними модемами.

После чтения документации выяснилось, что надо было шить без параметра -le......
Записан

sand_rey

  • Модератор
  • *
  • Благодарность: +165/-0
  • Оффлайн Оффлайн
  • Сообщений: 575
  • Модем: MiFi8000
  • Провайдер: lifecell
  • Тариф: Гаджет роутер
  • Антенна: Antex ZETA-F mimo

Вот еще загрузчики,похоже для MDM6600,но не проверял

А проверить сможешь, если я их пропатчу?
nprg точно смогу проверить, enprg - пока вряд ли получится.
Записан

sand_rey

  • Модератор
  • *
  • Благодарность: +165/-0
  • Оффлайн Оффлайн
  • Сообщений: 575
  • Модем: MiFi8000
  • Провайдер: lifecell
  • Тариф: Гаджет роутер
  • Антенна: Antex ZETA-F mimo

qdload -p25 loaders\NPRG6695p.bin
Найден блок идентификации загрузчика
Чипсет: MDM6600
Файл загрузчика: loaders\NPRG6695p.bin
Адрес загрузки: 00800000
Размер файла: 195160
Загружено: 195160
Запуск загрузчика...ok

Для продолжения нажмите любую клавишу . . .

порт меняется на ZTE WCDMA Technologies MSM(USB\VID_19D2&PID_0016), драйвера qdloader 9008 устанавливаются без проблем
Дальше на новый порт

qcommand  -p24 -c "i"
Отсылка hello...ok
 Чипсет: MDM6600  (70000000)
 Флеш-память: Hynix H8BCS0QG0MBP, NAND 128MiB 1,8V 16-bit
 Версия протокола: 3
 Максимальный размер пакета: 1024 байта
 Размер сектора: 512 байт
 Размер страницы: 2048 байт (4 секторов)
 Размер OOB: 64 байт
 Тип ECC: R-S, 4 бит
 Общий размер флеш-памяти = 1024 блоков (128 MB)
Для продолжения нажмите любую клавишу . . .
qcommand  -p24 -c "n"
* 000 NAND_FLASH_CMD         = e12fff1e
* 004 NAND_ADDR0             = 0000e869
* 008 NAND_ADDR1             = 00000100
* 00c NAND_CHIP_SELECT       = 1b500c0e
* 010 NANDC_EXEC_CMD         = e12fff1e
* 014 NAND_FLASH_STATUS      = 0000e869
* 018 NANDC_BUFFER_STATUS    = 00000100
* 020 NAND_DEV0_CFG0         = e12fff1e
* 024 NAND_DEV0_CFG1         = 0000e869
* 028 NAND_DEV0_ECC_CFG      = 00000100
* 040 NAND_FLASH_READ_ID     = e12fff1e
* 044 NAND_FLASH_READ_STATUS = 0000e869
* 048 NAND_FLASH_READ_ID2    = 00000100
* 064 FLASH_MACRO1_REG       = 0000e869
* 070 FLASH_XFR_STEP1        = e12fff1e
* 074 FLASH_XFR_STEP2        = 0000e869
* 078 FLASH_XFR_STEP3        = 00000100
* 07c FLASH_XFR_STEP4        = 1b500c0e
* 080 FLASH_XFR_STEP5        = e12fff1e
* 084 FLASH_XFR_STEP6        = 0000e869
* 088 FLASH_XFR_STEP7        = 00000100
* 0a0 FLASH_DEV_CMD0         = e12fff1e
* 0a4 FLASH_DEV_CMD1         = 0000e869
* 0a8 FLASH_DEV_CMD2         = 00000100
* 0ac FLASH_DEV_CMD_VLD      = 1b500c0e
* 0d0 FLASH_DEV_CMD3         = e12fff1e
* 0d4 FLASH_DEV_CMD4         = 0000e869
* 0d8 FLASH_DEV_CMD5         = 00000100
* 0dc FLASH_DEV_CMD6         = 1b500c0e
* 0e8 NAND_ERASED_CW_DET_CFG = 00000100
* 0ec NAND_ERASED_CW_DET_ST  = 1b500c0e
* 0f0 EBI2_ECC_BUF_CFG       = e12fff1e
Для продолжения нажмите любую клавишу . . .
каждый раз выдает другие значения
* 000 NAND_FLASH_CMD         = 3afffffb
* 004 NAND_ADDR0             = 1b400000
* 008 NAND_ADDR1             = 00000100
* 00c NAND_CHIP_SELECT       = 0000e869
* 010 NANDC_EXEC_CMD         = 3afffffb
* 014 NAND_FLASH_STATUS      = 1b400000
* 018 NANDC_BUFFER_STATUS    = 00000100
* 020 NAND_DEV0_CFG0         = 3afffffb
* 024 NAND_DEV0_CFG1         = 1b400000
* 028 NAND_DEV0_ECC_CFG      = 00000100
* 040 NAND_FLASH_READ_ID     = 3afffffb
* 044 NAND_FLASH_READ_STATUS = 1b400000
* 048 NAND_FLASH_READ_ID2    = 00000100
* 064 FLASH_MACRO1_REG       = 1b400000
* 070 FLASH_XFR_STEP1        = 3afffffb
* 074 FLASH_XFR_STEP2        = 1b400000
* 078 FLASH_XFR_STEP3        = 00000100
* 07c FLASH_XFR_STEP4        = 0000e869
* 080 FLASH_XFR_STEP5        = 3afffffb
* 084 FLASH_XFR_STEP6        = 1b400000
* 088 FLASH_XFR_STEP7        = 00000100
* 0a0 FLASH_DEV_CMD0         = 3afffffb
* 0a4 FLASH_DEV_CMD1         = 1b400000
* 0a8 FLASH_DEV_CMD2         = 00000100
* 0ac FLASH_DEV_CMD_VLD      = 0000e869
* 0d0 FLASH_DEV_CMD3         = 3afffffb
* 0d4 FLASH_DEV_CMD4         = 1b400000
* 0d8 FLASH_DEV_CMD5         = 00000100
* 0dc FLASH_DEV_CMD6         = 0000e869
* 0e8 NAND_ERASED_CW_DET_CFG = 00000100
* 0ec NAND_ERASED_CW_DET_ST  = 0000e869
* 0f0 EBI2_ECC_BUF_CFG       = 3afffffb
Для продолжения нажмите любую клавишу . . .

qrflash -p24 -s@ -m
Версия таблицы разделов: 3
 #  адрес    размер   атрибуты ------ Имя------
00 00000000  0000000a  00ffffff  0:MIBIB
01 0000000a  00000005  00ffffff  0:SIM_SECURE
02 0000000f  00000002  00ffffff  0:FSBL
03 00000011  00000005  00ffffff  0:OSBL
04 00000016  00000168  00ffffff  0:AMSS
05 0000017e  00000011  00ffffff  0:FOTA
06 0000018f  00000238  00ff01ff  0:FTL
07 000003c7  00000039  00ffffff  0:EFS2

Для продолжения нажмите любую клавишу . . .

qrflash -p24 -x -b0 -l0 -o rawdump.bin
Чтение блоков 00000000 - 000003ff
Формат данных: 512+16
Блок: 00000000

а дальше ничего не происходит.на остальные команды не реагирует - пустая строка,лишь повторно на qcommand  -p24 -c "i"  - отвечает  Отсылка hello...
« Последнее редактирование: 13 Мая 2015, 16:28:09 от sandrey »
Записан

mr.drone

  • Гость

Модем успешно запорот.
Этого я и боюсь.
какой тестпоинт замкнуть или напряжение подать
http://netobzor.org/forum/index.php?topic=10725.msg89839#msg89839
Кстати, у меня загрузчик nprg залился, на hello отзывается.
Просто записью образов убитых разделов с помощью qwdirect. Можно и фуллдамп записать таким же образом.
А можете выложить фулл mf677, желательно билайновский? В каком формате его писать? Какие разделы записать, чтобы модем определился как модем, и его увидела стандартная прога прошивки? И где собственно взять разделы и адресы, по которым их писать?
Записан