Текущее время: 16 май 2024, 09:55 • Часовой пояс: UTC + 3 часа
Сообщения без ответов | Активные темы

Драйвер для тюнера Behold TV T7 под Linux

Начать новую темуОтветить на тему Страница 12 из 22 [ Сообщений: 317 ] На страницу   Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 22  След.
Версия для печати Пред. тема | След. тема
АвторСообщение
Сообщение Добавлено: 30 июн 2015, 02:57. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    14 ноя 2013, 04:42
Сообщения: 70
из драйвера Т7 я выковыривал фирмваре для ХС5000С FW: V 0.6.40990, разницы никакой не заметил.

Твоё фирмваре похоже то же самое:
xc5000: Firmware latest-dvb-fe-xc5000c-0.6.30.5.fw loaded and running
xc5000: *** HW: V6.0, FW: V 0.6.40990
Профиль 
Сообщение Добавлено: 30 июн 2015, 03:39. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
ua0lnj, спасибо за подтверждение.
Получается, что версия этой FW 0.6.30.5 билд 40990.
Профиль 
Сообщение Добавлено: 30 июн 2015, 03:51. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
ua0lnj, по идее, с этой FW при чтении регистра Product ID должен стабильно читаться статус 0x14b4, а не 0x1388 и иногда и непредсказуемо 0x14b4.
Может потестишь? Пропатч xc5000.c, чтобы постоянно было видно статус в логе dmesg.
Профиль 
Сообщение Добавлено: 30 июн 2015, 13:28. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    14 ноя 2013, 04:42
Сообщения: 70
проблема в том, что у меня со старым фирмваре всегда 0x14b4.
Я ни разу не видел чтобы было 0x1388.
Профиль 
Сообщение Добавлено: 30 июн 2015, 14:48. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
ua0lnj, не может такого быть. Перепроверь. Может быть ты ошибся. Или же вдруг у тебя какая-то особенная ревизия RF чипа (что маловероятно).
Тюнер, с которым работал я, был куплен примерно в одно время с and2. И тюнер and2 вёл себя аналогично моему.

Вот смотри. В моём варианте драйвера, если был прочитан статус 0x14b4, то в лог dmesg выдаётся Firmware has been already initialised?
Вот так я патчил xc5000.c :
Код:
--- xc5000.c.orig   2013-03-22 12:45:45.000000000 +0800
+++ xc5000.c   2014-02-23 22:25:18.000000000 +0800
@@ -86,6 +86,9 @@ struct xc5000_priv {
 #define XC_PRODUCT_ID_FW_NOT_LOADED   0x2000
 #define XC_PRODUCT_ID_FW_LOADED    0x1388
 
+/* Already initialised? */
+#define XC_PRODUCT_ID_FW_INITIALISED   0x14b4
+
 /* Registers */
 #define XREG_INIT         0x00
 #define XREG_VIDEO_MODE   0x01
@@ -1345,6 +1348,13 @@ struct dvb_frontend *xc5000_attach(struc
       printk(KERN_INFO
          "xc5000: Firmware has not been loaded previously\n");
       break;
+   case XC_PRODUCT_ID_FW_INITIALISED:
+      printk(KERN_INFO
+         "xc5000: Successfully identified at address 0x%02x\n",
+         cfg->i2c_address);
+      printk(KERN_INFO
+         "xc5000: Firmware has been already initialised?\n"); // ------------ Это сообщение видно в dmesg в случае 0x14b4
+      break;
    default:
       printk(KERN_ERR
          "xc5000: Device not found at addr 0x%02x (0x%x)\n",

В твоём варианте разницы в статусе не видно, так как ты просто сделал:
Код:
#define XC_PRODUCT_ID_FW_LOADED   0x1388
#define XC_PRODUCT_ID_FW_LOADED_1 0x14b4 /* for Beholder T7 */

   switch (id) {
   case XC_PRODUCT_ID_FW_LOADED:
   case XC_PRODUCT_ID_FW_LOADED_1:
      printk(KERN_INFO
         "xc5000: Successfully identified at address 0x%02x\n",
         cfg->i2c_address);
      printk(KERN_INFO
         "xc5000: Firmware has been loaded previously\n");
      break;

Вот примеры логов, которые делал and2 с моим вариантом драйвера:

Здесь видно, что тюнер выдаёт статус 0x1388 , так как нет сообщения из моего варианта для 0x14b4 "Firmware has been already initialised?"
viewtopic.php?f=11&t=14101&start=120#p85060
Код:
[   22.391273] vboxpci: IOMMU not found (not registered)
[   22.637665] xc5000 9-0061: attaching existing instance
[   22.665653] xc5000: Successfully identified at address 0x61
[   22.665659] xc5000: Firmware has not been loaded previously
[   22.665664] DVB: registering new adapter (saa7133[0])
[   22.665671] saa7134 0000:03:00.0: DVB: registering adapter 0 frontend 0 (Si2168 DVB-T2/C)...

А тут видно, что был прочитан статус 0x14b4, из-за наличия сообщения в dmesg "Firmware has been already initialised?"
viewtopic.php?f=11&t=14101&start=135#p85074
Код:
[   22.169427] init: plymouth-upstart-bridge main process ended, respawning
[   22.521329] xc5000 9-0061: attaching existing instance
[   22.529350] xc5000: Successfully identified at address 0x61
[   22.529353] xc5000: Firmware has been already initialised?
[   22.529357] DVB: registering new adapter (saa7133[0])
[   22.529362] saa7134 0000:03:00.0: DVB: registering adapter 0 frontend 0 (Si2168 DVB-T2/C)...
[  204.575144] si2168_set_frontend: system=16 frequency=554000000 bandwidth=8000000 symrate=0 qam=6 stream_id=0
[  321.757024] si2168_set_frontend: system=16 frequency=554000000 bandwidth=8000000 symrate=0 qam=6 stream_id=0
user@Andrey-Linux ~ $
Профиль 
Сообщение Добавлено: 30 июн 2015, 15:33. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
Возникла одна мысль.

Очень может быть, что в моём варианте, после инициализации "аналога", в RF тюнер начинает заливаться фирмварь, но из-за ошибок на i2c шине и медленной её скорости она не успевает до конца залиться, до того момента, как начнётся аттач RF тюнера уже к "цифре". И, возможно, из-за недозалитой фирмвари из регистра Product ID и читается статус 0x1388.
Чуть позже она конечно дозальётся, но статус из Pruduct ID уже больше никто не читает. :-)

Если же фирмварь к моменту начала аттача к "цифре" уже успела залиться, то тогда сразу читается статус 0x14b4.

Тогда, в в твоём варианте и в новом media_build процесс заливки фирмари в RF тюнер проходит быстрее, и отсюда стабильный статус 0x14b4.

И в таком случае, новая фирмварь необязательна.
Но в код драйвера xc5000.c всё равно требуется добавить обработку для 0x14b4.

Опять же, это только моё предположение.

ua0lnj, интересно было бы проверить, какие статусы выдаёт мой вариант на твоём тюнере...

Или может быть сможет помочь and2, если он, конечно, ещё читает эту ветку.
Закомментировать в драйвере ua0lnj статус 0x1388 и раз 5 подряд перезагрузиться, с сохранением лога dmesg.
Будет ли аттач RF тюнера и заработает ли цифра.
Профиль 
Сообщение Добавлено: 30 июн 2015, 16:03. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    14 ноя 2013, 04:42
Сообщения: 70
ещё проще
---------------
if (xc5000_readreg(priv, XREG_PRODUCT_ID, &id) != 0)
goto fail;
printk(KERN_INFO "xc5000: XREG_PRODUCT_ID %x\n", id);
switch (id) {
case XC_PRODUCT_ID_FW_LOADED:
case XC_PRODUCT_ID_FW_LOADED_1:
-------------------
будет просто выводиться что считалось.
Если фирмваре не загружено, даёт 0х2000, причём размер фирмваре соизмерим с si2168, но грузится несколько секунд.
Фирмваре прогрузиться не полностью не может, будет заливка поновой при следующем обращении.
На твоём варианте я тоже не разу не видел 1388
Профиль 
Сообщение Добавлено: 30 июн 2015, 16:25. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
ua0lnj
Неужели у нас всё-таки разные ревизии чипов RF тюнеров?

and2, если ещё заглядываешь сюда, поможешь протестить?

PS:
Я в предыдущем посте не дописал: "Закомментировать в драйвере ua0lnj статус 0x1388, и вместо него добавить 0x14b4"
Вот так:

#define XC_PRODUCT_ID_FW_LOADED 0x14b4//0x1388

Или сделать по варианту, предложенному ua0lnj, что даже предпочтительнее.
Профиль 
Сообщение Добавлено: 01 июл 2015, 05:39. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    17 авг 2013, 19:01
Сообщения: 106
Demod
В каком файле нужно прописать необходимые строки?
Behold TV T7,Behold TV Cruise
Профиль 
Сообщение Добавлено: 01 июл 2015, 13:23. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
and2, спасибо за помощь.
Что нужно сделать:
С моим вариантом драйвера просто перезагрузиться 5 или более раз, и после каждой перезагрузки сохранять вывод dmesg. После присоединить архив с логами к сообщению.
С вариантом драйвера ua0lnj немного сложнее.
1. Нужно открыть файл ./media_build-behold/linux/drivers/media/tuners/xc5000.c
В этом файле найти строку:

if (xc5000_readreg(priv, XREG_PRODUCT_ID, &id) != 0)

после неё должна быть строчка с:

goto fail;

сразу после этой строки нужно добавить такую строку:

printk(KERN_INFO "xc5000: XREG_PRODUCT_ID %x\n", id);

2. Нужно найти строчку:

dprintk(1, "*** HW: V%d.%d, FW: V %d.%d.%d\n",

и заменить её на такую строку:

printk(KERN_INFO "xc5000: *** HW: V%d.%d, FW: V %d.%d.%d\n",

Теперь, как обычно, нужно сделать make и make install находясь в каталоге media_build-behold.
Если ошибок во время сборки не будет, то далее, так же, как и с моим вариантом, нужно перезагрузить компьютер 5 или более раз, сохраняя после каждого раза лог dmesg.
И потом тоже присоединить архив со всеми dmesg к сообщению на форум.
Профиль 
Сообщение Добавлено: 01 июл 2015, 20:20. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    17 авг 2013, 19:01
Сообщения: 106
Demod
Выполнил всё по "инструкции" С начала поставил драйвер от Demod,потом драйвер от ua0lnj,вроде последний затёр первый без проблем.Перед тем как сделать dmesg запускал Т2 канал на VLC.
Вложения:
 dmesg.7z [35.04 КБ]
Скачиваний: 408
Behold TV T7,Behold TV Cruise
Профиль 
Сообщение Добавлено: 01 июл 2015, 22:08. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
and2 ты всё сделал правильно, но я допустил ошибку.
Из-за этого в логе не видно хардварную ревизию тюнера.

Поэтому есть ещё 1 просьба. Используя версию ua0lnj. В том же файле xc5000.c, вместо строки

printk(KERN_INFO "xc5000: *** HW: V%d.%d, FW: V %d.%d.%d\n",

нужно вернуть назад строчку

dprintk(1, "*** HW: V%d.%d, FW: V %d.%d.%d\n",

и в каталге media_build-behold сделать make и make install

А в файле /etc/modprobe.d/vmwgfx-fbdev.conf, где ты добавлял строчку options xc5000 no_poweroff=1, её временно нужно изменить на:

options xc5000 no_poweroff=1 debug=1

После этого нужно перезагрузиться, запустить цифровой канал на просмотр, сохранить dmesg и присоденинить его к сообщению.
Так мы узнаем аппаратную ревизию твоего RF тюнера.


Предварительно можно сказать, что в версии ua0lnj тюнер стабильно выдаёт статус 0x14b4. Все 7 перезагрузок.
А в моей версии 4 раза 0x1388 и 3 раза 0x14b4 :-) Чудеса.

Это либо из-за того, что ua0lnj аттачит тюнер к цифре немного иначе, либо из-за того, что в свежем media build сделаны какие-то изменения.
Либо всё же из-за ошибок на i2c шине и частично недозалитой фирмвари в момент чтения Product ID.



========== Добавлено ==========

Я ещё раз внимательно сравнил логи и сравнил исходники xc5000.c начала 2014 (моей версии) и начала 2015 (версии ua0lnj).

Во-первых, по логам видно, что в xc5000.c начала 2014 присутствует явный баг, из-за которого драйвер RF тюнера "не видит", что фирмварь уже была загружена при инициализации "аналога", и начинает заливать её ещё и ещё раз при аттаче "цифры". При этом обильно сыпя ошибками и ругаясь на i2c шину.
Во-вторых, видно, что исходники xc5000.c начала 2015 года были существенно доработаны. Возможно, именно из-за этого баг больше не проявляется, и то, что фирмварь RF тюнера уже была залита, "видится" драйвером нормально. И стабильно читается правильный статус, именно от RF тюнера XC5000C.

Этим и можно хоть как-то объяснить, почему в старой версии xc5000.c из Product ID читается статус и не 0x2000 и не 0x14b4, а какой-то странный "между небом и землёй" 0x1388 (причем от старого тюнера XC5000)

ua0lnj, возможно и у тебя мой вариант драйвера выдавал 0x1388, просто на этот факт ты не обратил внимания (так как у меня этот обрабатывалось и не мешало) и в дальнейшем вплотную переключился на работу уже со своей версией.
Я больше чем уверен, что у and2 такая же аппаратная версия RF тюнера, что и у тебя, и что была и у меня.
Впрочем, подождём нового лога от and2 :-) Вдруг версия всё-таки другая.
Профиль 
Сообщение Добавлено: 02 июл 2015, 15:21. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    17 авг 2013, 19:01
Сообщения: 106
Demod
Возможно "чудеса" (0x1388) связаны с тем,что я раза два (или три) вроде включал не 1 канал (как в основном), а Россия 24 или другой.
Вложения:
 ua0lnj.7z [32.6 КБ]
Скачиваний: 366
Behold TV T7,Behold TV Cruise
Профиль 
Сообщение Добавлено: 02 июл 2015, 17:54. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
and2, благодарю за помощь. Логи сняты сразу в нескольких вариантах и здорово пригодятся.
По ним видно, что твой тюнер тоже ревизии 6.0
И я всё же склоняюсь к тому, что 0x1388 из-за какого-то бага или недоработки в драйвере xc на тот момент.
Профиль 
Сообщение Добавлено: 02 июл 2015, 18:18. Заголовок сообщения:  Re: Драйвер для тюнера Behold TV T7 под Linux
Зарегистрирован:
    31 дек 2013, 09:22
Сообщения: 147
and2, если тебе это ещё не надоело.
Сможешь снять ещё 1 лог?
Если согласишься, то перед снятием лога, нужно строчку

options xc5000 no_poweroff=1 debug=1

заменить на

options xc5000 debug=1

и перезагрузиться.

Цифра вряд ли заработает, так что даже не пробуй, а вот лог dmesg после перезагрузки без "no_poweroff=1" но с включенным дебагом пригодился бы.
Профиль 
Показать сообщения за:  Поле сортировки:    
Начать новую темуОтветить на тему  Страница 12 из 22  [ Сообщений: 317 ]  На страницу   Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 22  След.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Найти:  
Перейти: