Интересное

Сообщение об ошибке

Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in drupal_environment_initialize() (line 684 of /home/www/nixtalk.com/includes/bootstrap.inc).

Кастомное ядро для RK3188

Опубликовано вс, 12/01/2013 - 12:44 пользователем Demontager

Кастомное ядро для RK3188
Недавно писал статью как поставить Picuntu на RK 3188, в этой раскажу как можно собрать кастомное ядро и заставить работать wifi. Некоторые RK3188 устройства поставляются с wifi чипами Broadcom ap6210, другие с Realtek RTL8188, последний из упомянутых работает из коробки, но если у вас ap6210, то работать не будет.
Существует очень удобный набор для компиляции кастомного ядра, называется "Marvin", разработанный человеком под ником phjanderson, github проект расположен по адресу https://github.com/phjanderson/marvin
Этот набор позволяет собирать ядра не только для Linux, но и для других платформ, к примеру Android.
Также хочу сказать отдельное спасибо Pierre aka perun с форума freaktab.com, который помог мне в процессе эксперементов со сборкой ядра.

Начнем пожалуй, пошагово, постараюсь ничего не упустить

1. Для сборки понадобится Ubuntu 12.04 LTS 64 бит, поставьте ее любым удобным методом, к примеру в VirtualBox.

2. Ставим git для скачивания проекта

  1. sudo apt-get install git

3. Создаем рабочую папку и скачиваем marvin

  1. mkdir android
  2. cd android
  3. git clone https://github.com/phjanderson/marvin

4. Скачиваем исходники ядра Picuntu

  1. git clone https://github.com/phjanderson/Linux3188

5. Понадобится также initramfs, качаем и переименовываем

  1. git clone https://github.com/Galland/rk30_linux_initramfs
  2. mv rk30_linux_initramfs initramfs

6. Переходим в marvin директорию и выполняем команду которая скачивает необходимые пакеты для сборки

  1. cd marvin
  2. ./marvin install_builddep

7. Все готово, но прежде всего нужно проверить какая выбрана платформа

  1. ./marvin platform должно показывать "Current platform: picuntu3188" если нет, вводим
  2. ./marvin platform picuntu3188

8. Введите команду чтобы увидеть все возможные опции

  1. ./marvin config

Но перед тем как приступить уже к сборке, нужно внести изменения в исходные коды. Это для того, чтобы активировать поддержку wifi.
Переходим в ./marvin/platform/picunto3188/config/base.config и редактируем 527 строку
Меняем код:

  1. CONFIG_CMDLINE="root=LABEL=linuxroot init=/sbin/init loglevel=8 rootfstype=ext4 rootwait mtdparts=rk29xxnand:0x00002000@0x00000000(paramete r),0x00002000@0x00002000(misc),0x00008000@0x000040 00(kernel),0x00008000@0x0000C000(boot),0x000C000@0 x00014000(recovery),0x00100000@0x00020000(backup), 0x00040000@0x00120000(cache),0x00400000@0x00160000 (userdata),0x00002000@0x00560000(kpanic),0x0010000 0@0x00562000(system)"

на

  1. CONFIG_CMDLINE="init=/sbin/init root=/dev/mtdblock2 mtdparts=rk29xxnand:0x00008000@0x00002000(boot),0x00008000@0x0000A000(kernel),-@0x00012000(system)"

Это позволит загружаться системе с NAND

9. И теперь для wifi, идем в ../android/Linux3188/arch/arm/mach-rk3188/board-rk3188-ds1006h-sdmmc-config.c находим строку 76 и меняем

  1. #define RK30SDK_WIFI_GPIO_POWER_N RK30_PIN3_PD0

на

  1. #define RK30SDK_WIFI_GPIO_POWER_N RK30_PIN3_PB4

10. Теперь уже все точно готово для сборки ядра. Создаем конфиг с нужными опциями и даем команду на компиляцию. К примеру, чтобы собрать ядро с поддержкой разрешения 1080 и процессором разогнанным до 1.8 Ггц, вводим

  1. ./marvin config mk802iv_ap6210 cpu1800 1080p
  2. ./marvin build

11. Компиляция занимает от 3 до 10 минут, в зависимости от скорости процессора. Когда сборка завершиться, готовое ядро будет скопировано в ../android/marvin/platform/picuntu3188/output
Если необходимо собрать ядро с другими опциями, то нужно очистить проект от результатов прошлой сборки и заново ввести новые опции

  1. ./marvin distclean
  2. ./marvin config [новые опции] см.пункт 10
  3. ./marvin build

12. Чтобы прошить новое ядро, рекомендую прочесть статью Picuntu на RK3188. В пунктах 3 по 5 показывается как перевести устройство в режим прошивки. Также понадобиться PicUntu-4.5-BasicGUI-Nand пакет чтобы прошить ядро.
Распакуйте его и запустите RKAndroidTool.exe, расположенный в PicUntu-4.5-BasicGUI-Nand/rk_flash_1.37 папке. Поставьте галочки на необходимых опциях, по крайней мере должна быть активирована опция с новым ядром.
Кастомное ядро для RK3188
Нажмите "Flash ROM". Несколько секунд и готово, можно вынимать мини-пк. Если раньше вы никогда не прошивали Picuntu, то не забудьте сначала нажать "Erase NAND" и выбрать Loader, parameter, boot, system

У меня уже есть несколько готовых ядер. Названия файлов подскажут какие опции там активны.

Для Broadcom ap6210
a. mk802iv_ap6210_1080p.zip
b. mk802iv_ap6210_cpu1800h_720p.zip
c. mk802iv_ap6210_cpu1800h_ddr667_1080p.zip
d. mk802iv_ap6210_dd667_1080p.zip

Альтернативные для ap6210
a. linuxium-720-mk802iv-nand-kernel.img
b. linuxium-1080-mk802iv-nand-kernel.img

Для Realtek rtl8188eu
a. mk802iv_rtl8188eu_cpu1800h_1080p.zip

Образы Linux где работает wifi 0179 Realtek (найден в ug007b) с коробки, подробнее в статье Debian/Ubuntu на RK 3188
Debian dx05_nand_debian_1.1.1.7z
Ubuntu dx05_nand_ubuntu_1.1.1.7z

category_index: 
Поделится: 

41 комментарий

Аватар пользователя арсентий

автор арсентий вкл вт, 12/17/2013 - 08:22

Странно но на устройстве MK888 не видно ни вайфай карты ни езернет карты.
Не со стандартным ядром не с кастомным.
ЧЯДНТ?
Как вообще посмотреть какие железные устройства есть?

Аватар пользователя Demontager

автор Demontager вкл вт, 12/17/2013 - 17:43

Просмотр сетевых интефейсов
ifconfig -a
или
iwconfig

USB устроства
lsusb

Подгруженные модули
lsmod

Аватар пользователя Гость

автор Гость вкл вт, 12/17/2013 - 21:12

В сетевых интерфейсах их нет.
ip a:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
link/sit 0.0.0.0 brd 0.0.0.0
3: ip6tnl0: <NOARP> mtu 1452 qdisc noop state DOWN
link/tunnel6 :: brd ::

lsmod:
Module Size Used by
rk30xxnand_ko 350544 0

lsusb:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 002 Device 003: ID 0bda:0179 Realtek Semiconductor Corp.
Bus 002 Device 004: ID 03ee:8801 Mitsumi
Bus 002 Device 005: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse

Аватар пользователя Demontager

автор Demontager вкл ср, 12/18/2013 - 16:09

Судя по выводу, у вас wifi на Realtek чипе, у меня на broadcom 6210. Могу собрать ядро для Realtek, попробуете.

Аватар пользователя арсентий

автор арсентий вкл ср, 12/18/2013 - 18:08

Попробую. Но сам бы тоже попробовал собрать.

Аватар пользователя Demontager

автор Demontager вкл ср, 12/18/2013 - 19:04

Собрал ядро с поддержкой rtl8188eu и добавил в статью.

Аватар пользователя арсентий

автор арсентий вкл пн, 12/30/2013 - 20:44

не подошло ядро.
Подошло freaktab.com/showthread.php?6803-Linux-for-RK3188-based-TV-boxes. Я поставил ядро дебиан. Все работает, за исключением разрешения видеокарты Выставляется только фуллашди. Не смог найти где можно поменять. Загрузчик нестандартный, разрешение в нем указывается.

Аватар пользователя арсентий

автор арсентий вкл пн, 12/30/2013 - 20:57

ps: понял свою ошибку, это ядро собрано под это расширение, а не в загрузчике дело. Это получается под каждое разрешение свое ядро собирать?

Аватар пользователя Demontager

автор Demontager вкл пн, 12/30/2013 - 21:20

Да, такая же суть как это делается в marvin, нужно указать опции, потом собирать.

Аватар пользователя Demontager

автор Demontager вкл пн, 12/30/2013 - 21:16

Вот здесь freaktab.com/showthread.php?6803-Linux-for-RK3188-based-TV-boxes&p=118991&viewfull=1#post118991 уже наш коллега спрашивал по поводу ядра, mmm123 использовал ядро от Linux3188.
По идеи можно попытаться скопировать вместо

  1. git clone https://github.com/phjanderson/Linux3188

этот

  1. git clone https://github.com/aloksinha2001/Linux3188

и в том же marvin собрать ядро с нужным разрешением. Конфиг для ядра mmm123 тоже дает.
Жаль у меня нет еще подобной штуки для эксперементов, на том что был сейчас работает этот сайт + еще почтовый серевер вертится.

Аватар пользователя caster

автор caster вкл пт, 01/17/2014 - 17:12

доброго времени суток!
(mk802iv_ap6210) спасибо за емкую статью, отвечающую на многие вопросы, но вот еще вопросы:
1. я бы хотел что бы система загружалась с HDD(SD) и в каком состоянии она должна там быть(в образе или распакована)?
2. здесь мне понятно что она грузится с раздела с меткой linuxroot и фс ext4, а дальше что за параметры на что они влияют и как правильно они должны быть записаны CONFIG_CMDLINE="root=LABEL=linuxroot init=/sbin/init loglevel=8 rootfstype=ext4 rootwait mtdparts=rk29xxnand:0x00002000@0x00000000(paramete r),0x00002000@0x00002000(misc),0x00008000@0x000040 00(kernel),0x00008000@0x0000C000(boot),0x000C000@0 x00014000(recovery),0x00100000@0x00020000(backup), 0x00040000@0x00120000(cache),0x00400000@0x00160000 (userdata),0x00002000@0x00560000(kpanic),0x0010000 0@0x00562000(system)" хотелось больше узнать об опциях загрузки!

Аватар пользователя Demontager

автор Demontager вкл пн, 01/20/2014 - 12:31

Приветствую,
1. Распакована должна быть, это естественно.

2. Это все параметры ядра на начальном запуске.
root= где рут файловая система находится
init= первая команда, которая должна выполнятся при инициализации ядра
loglevel= из названия думаю очевидно что это степень логирования информации о загрузке
rootfstype= тип файловой системы
rootwait= параметр дает комманду на ожидание, в случае если нужно проинициализировать какие-то дополнительные разделы
mtdparts= в данном случае ядро ждет пока не подключатся MTD дополнительные разделы. HEX номера указывают их расположение в памяти. А так как рут у нас находится в NAND TV стика, то без инициализации этих разделов, мы не сможем загрузить ядро.

Аватар пользователя caster

автор caster вкл вт, 01/21/2014 - 13:45

спасибо за ответы!
1. попытался получить ядро с запуском с usbHDD kernel_marvin_mk802iv_ap6210_720p_cpu1608h_ddr667_gpu600h.img (у меня естественно mk802iv_ap6210) получил, загрузился как надо с usbHDD, но не работает wi-fi(BT само собой), читал (я так понял ваш пост) на freaktab(не могу оставлять ссылки я не зарег.)

drivers/net/wireless/rtl8188eu/Kconfig:2:warning: choice value used outside its choice group

у меня есть такая же строчка в терминале! Как решить проблему с wi-fi??? подскажите или ткните носом(ПРОБОВАЛ СОБИРАТЬ ПО ВСЯКОМУ и с этим /aloksinha2001/Linux3188, и менял #define RK30SDK_WIFI_GPIO_POWER_N RK30_PIN3_PB4, и оставлял как есть #define RK30SDK_WIFI_GPIO_POWER_N RK30_PIN3_PD0)!
2. HEX указывают их расположение в памяти, это они: 0x0010000 0@0x00562000(system)?

PS уже голову отрывает.

Аватар пользователя Demontager

автор Demontager вкл ср, 01/22/2014 - 22:38

1. Ссылка на мой пост
Ядро не компилировалось по другой причине - там не хватало initramfs, но в статье я это все подметил.
Если у вас точно ap6210, то попробуйте еще другие ядра, которые я собирал. Если wifi не заработает, покажите ваш lsusb и то что в терминале пишет по поводу wifi. Может чип где-то отличается, китайцы что угодно могут впихнуть, а написать одинаковое устройство. Еще вариант, прошейте образ debian/ubuntu http://nixtalk.com/debian_rk3188 там твики уже какие-то делались товарищем mmm123, возможно заработает.

2. HEX идентификатор показывает распожение раздела system. MTD таблица напоминает HAL.

Аватар пользователя caster

автор caster вкл сб, 01/25/2014 - 08:44

1. в вашем ядре тоже не работает
2. у меня AP_6210, пробовал от linuxium: linuxium-720-mk802iv-nand-kernel, все работает!

Аватар пользователя Demontager

автор Demontager вкл сб, 01/25/2014 - 09:53

Отлично, добавил ядро linuxium в статью. Значит, все-таки есть где-то отличие.

Аватар пользователя caster

автор caster вкл пн, 02/03/2014 - 21:29

как тогда изменить загрузку в ядре от linuxium?

Аватар пользователя Demontager

автор Demontager вкл чт, 02/06/2014 - 23:15

Аналогично как это делалось в ядре для Picuntu.
Сегодня (6 фев 2014) склонировал marvin git, номер строки для правки ядра linuxium там 526.
Путь ./marvin/platform/linuxium/config/base.config
По умолчанию строка выглядит так

  1. CONFIG_CMDLINE="initrd=0x62000000,0x00800000 init=/sbin/init root=/dev/mtdblock2 mtdparts=rk29xxnand:0x00008000@0x00002000(boot),0x00008000@0x0000A000(kernel),-@0x00012000(system)"

После правки только нужно не забыть сделать ./marvin platform linuxium

Аватар пользователя sysmer

автор sysmer вкл ср, 08/06/2014 - 20:03

Привет, CASTER, раскажи поподробней пожалуйста каким образом ты получил ядро с загрузкой с USBHDD?

Аватар пользователя Олег

автор Олег вкл вс, 01/19/2014 - 22:42

Буду очень благодарен, если выложите kernel с поддержкой 0179 Realtek.
Bus 002 Device 003: ID 0bda:0179 Realtek Semiconductor Corp

Аватар пользователя Demontager

автор Demontager вкл пн, 01/20/2014 - 21:04

Добавил в статью уже готовые образы систем, где точно работает данный wifi адаптер.

Аватар пользователя Вячеслав

автор Вячеслав вкл сб, 02/01/2014 - 09:00

Привет!
Я поставил Ubuntu 12.04 LTS 32 бит на флэшку. Загрузился. И делал по описанным Вами шагам. Но, на комаде:

./marvin install_builddep

пошли ошибки с упоминанием пакетов:

libsdl1.2-dev
ia32-libs
lib32z1-dev
lib32ncurses5-dv

может и еще что-то... В репозитории нет. libsdl1.2-dev нашел на стороне, но инсталлируется с ошибками. Остального вообще не нашел.

У Вас прошло все гадко - без всего безобразия.. Почему? И-за того, что у меня 32 бит ОС?

Или у Вас есть секрет? :)

Аватар пользователя Вячеслав

автор Вячеслав вкл сб, 02/01/2014 - 14:21

P.S. К моему сообщению выше... - Ошибка... Получилось: "казнить нельзя помиловать"... :)

Вместо слова "гадко" должно быть слово "гладко". И фраза такая: "У Вас прошло все гладко - без всего безобразия.."

Прошу прощения... :(

Аватар пользователя Demontager

автор Demontager вкл чт, 02/06/2014 - 22:44

Да, проблема в том, что вы ставили на 32 битную ОС. Скрипт install_builddep расчитан на загрузку и установку зависимостей для 64 битной Ubuntu 12.04

Аватар пользователя walder777

автор walder777 вкл пт, 02/07/2014 - 20:12

я че та не понял, как компилируется ядро если нет даже привязки к конкретному устройству. Может кто_нить объяснит?

Аватар пользователя Demontager

автор Demontager вкл сб, 02/08/2014 - 10:47

Не совсем понятно что вы имели в виду. Есть к примеру исходники ядра Linux под Android, и есть toolchain. Модифицируете исходники, компилируете ядро.

Аватар пользователя homer

автор homer вкл ср, 03/19/2014 - 11:43

Подскажите, поставил все на девайс ipegtop a2, не работает только wifi, lsusb не выдает устройство, там только Linux Foundation 2/0 root hub (2 шткуки), usb hub? мышь и клавиатура.
Вопрос, что можно попробовать сделать, чтобы завести wifi ? очень нужно

Аватар пользователя Demontager

автор Demontager вкл вс, 03/23/2014 - 20:33

Пробуйте другие ядра, если не хотите компилировать вручную. В теме они есть

Аватар пользователя Сергей

автор Сергей вкл сб, 05/10/2014 - 12:54

А как насчет ядра для Verico KM-UQM11A-S все параметры девайса сдесь 4pda.ru/forum/index.php?s=&showtopic=331715&view=findpost&p=31134673. Вы только специализируетесь по ядрам или по прошивкам тоже можете помочь?

Аватар пользователя Demontager

автор Demontager вкл пн, 05/19/2014 - 13:21

Могу разве что советовать прошивки на те устройстройства, которые сам имею.

Аватар пользователя Сергей

автор Сергей вкл пн, 05/19/2014 - 21:34

А как на счет ядра?

Аватар пользователя Денис

автор Денис вкл вт, 09/02/2014 - 12:05

А нет ли уже готового ядра с параметром LCD1? А то прошивается все на ура, а изображение на HDMI не подается. :(
Устройство: MK908II

Аватар пользователя Денис

автор Денис вкл вт, 09/02/2014 - 13:27

То есть с LCD0.

Аватар пользователя Владислав

автор Владислав вкл ср, 01/07/2015 - 12:46

В результате компиляции получается только ядро. А зачем тогда в статье говорится о том, что нужно разворачивать initramfs (п.5). Не заметил. чтобы оно использовалось при компиляции. И в документации к самому marvin не говорится о том, что его нужно использовать.
Спасибо за ответ.

Аватар пользователя Demontager

автор Demontager вкл чт, 01/08/2015 - 03:48

Я пробовал и без initramfs, насколько помню без него не инициализировался root каталог, грузилось только ядро.

Аватар пользователя Serg

автор Serg вкл чт, 05/28/2015 - 11:40

Добрый день, подскажите, а как добавить в ядро поддержку RTL 8201f -ethernet, RTL 8723AU - wifi у меня есть их драйвера в виде файлов *.ko, но хотелось бы подшить их в ядро. Спасибо

Аватар пользователя Demontager

автор Demontager вкл ср, 06/03/2015 - 12:37

Пересобрать ядро с этими модулями, другого варианта нет. Вам нужны исходники ядра разумеется.

Аватар пользователя Evgeniy

автор Evgeniy вкл пн, 09/14/2015 - 09:53

Друзья, подскажите, а как на этом ядре потом с SD карты загрузиться?

Аватар пользователя tMH

автор tMH вкл вс, 08/09/2015 - 14:10

Уважаемый Demontager, будь добр, подскажи простой и надёжный способ сделать бэкап NAND с установленным debian в _один_ файл .IMG, что бы после испробовать мультизагрузчик - а если не понравится, не пойдёт что то - откатится назад с этим бэкапным .IMG.

Благдарю заранее!
-t

Аватар пользователя Demontager

автор Demontager вкл пн, 08/10/2015 - 18:19

Вам нужен ROM Dumper Tool, там все интуитивно понятно. Вот статья о бекапе NAND по-подробнее http://denik.od.ua/backup-and-recovery-android-rk3188/

Аватар пользователя Hectorsigo

автор Hectorsigo вкл пт, 05/13/2016 - 03:34

i can concur with all the write-up
I can't subscribe to your channel
This really is the worst article of all, I’ve study
Studying this post - the gift of your time
All materials copied from an additional source

Добавить комментарий