[LINUX] Utilisez PX-S1UD / PX-Q1UD avec Jetson nano

introduction

Puisqu'il y avait beaucoup d'articles sur la construction d'un serveur d'enregistrement avec Raspberry Pi, j'ai pensé qu'il serait possible de le construire avec Jetson, et c'est un résumé de diverses pierres d'achoppement. La raison pour laquelle j'ai décidé de construire avec Jetson nano est que les performances d'encodage ont été améliorées lorsque j'ai examiné les spécifications.4K @ 30 | 4x 1080p @ 30 | 9x 720p @ 30 (H.264/H.265) Puisqu'il est dit qu'il est possible de faire un encodage en temps réel 4ch en dehors de la nécessité? ?? ?? J'ai commencé à le construire. L'objectif est de préparer le tuner à l'utilisation avec Jetson, veuillez donc vous référer à d'autres articles pour la configuration de l'enregistrement, etc.

De quoi as-tu besoin

Environnement prérequis

Installation du système d'exploitation sur Jetson nano et fonctionnement du terminal par SSH, etc.

Environnement OS

Jetson Nano Developer Kit SD Card Image JP 4.4 Kernel 4.9.140

procédure

introduction

Dans l'environnement ci-dessus, si vous poignardez le PX-Q1UD,

terminal


$ dmesg
[ 1942.289567] usb 1-2.1.1: new high-speed USB device number 11 using tegra-xusb
[ 1942.310251] usb 1-2.1.1: New USB device found, idVendor=3275, idProduct=0080
[ 1942.310257] usb 1-2.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1942.310261] usb 1-2.1.1: Product: PX-S1UD Digital TV Tuner
[ 1942.310265] usb 1-2.1.1: Manufacturer: PLEX Digital TV Tuner

Vous ne verrez qu'un message du noyau comme celui-ci, aucun pilote DVB ne sera appliqué. Cela est dû au fait que le pilote DVB est omis dans le noyau standard Jetson. ** Première pierre d'achoppement: sanglot: **

Construisez le noyau

Il existe un article de référence très facile à comprendre. Veuillez vous référer ici pour la signification de la commande. https://qiita.com/yamamo-to/items/6fc622df7b5cce3eccfb

Configuration du noyau

Commandes du téléchargement du noyau à l'affichage de l'écran de configuration de configuration

terminal


$ sudo jetson_clocks
$ sudo apt install -y libncurses5-dev
$ cd && mkdir kernel && cd kernel
$ wget https://developer.nvidia.com/embedded/L4T/r32_Release_v4.2/Sources/T210/public_sources.tbz2
$ tar xvf public_sources.tbz
$ cd Linux-for-Tegra/source/public
$ tar xvf kernel_src.tbz2
$ cd kernel/kernel-4.9
$ zcat /proc/config.gz  > .config
$ make menuconfig

Destination DL de la dernière source Sources du package de pilotes L4T (BSP ) est l'URL

Si vous accédez à cet écran, après un certain temps,

スクリーンショット 2020-05-11 19.02.08.png L'écran menuconfig sera affiché, donc Accédez à Pilotes de périphériques-> Support multimédia. スクリーンショット 2020-05-11 19.02.17.png スクリーンショット 2020-05-11 19.02.35.png

Dans le support multimédia

Je vais changer de zone. (Il peut y avoir des choses inutiles)

Si vous le modifiez, enregistrez-le avec Enregistrer et appuyez sur Echap à plusieurs reprises pour quitter.

Patch de noyau

J'aimerais pouvoir le construire et l'utiliser avec ça, mais il semble qu'il y ait un bogue dans le pilote Siano lors de son utilisation avec arm64, et quand j'insère le tuner, il se bloque après un certain temps. ** Deuxième pierre d'achoppement: sanglot: **

Si vous cochez dmesg smsusb:smsusb_onresponse: error, urb status -71, 0 bytes smmu_dump_pagetable Quoi? mc-err Qu'est-ce qui ne va pas? J'obtiens une erreur comme celle-ci.

Un correctif pour résoudre le problème a été publié, je vais donc l'appliquer.

Article de référence très reconnaissant https://blog.ayushio.com/2018/12/27/rock64-record/

terminal


$ cd ~/kernel/Linux_for_Tegra/source/public/kernel
$ wget -O siano.patch https://patchwork.kernel.org/patch/10256121/raw/
$ cd kernel-4.9
$ patch -p1 < ../siano.patch

Construire

terminal


$ make oldconfig
$ make prepare
$ make modules_prepare
$ make -j4 Image && make -j4 modules

Cela prend environ une heure. Rafraîchissons-le.

Installation

terminal


$ sudo make modules_install
$ sudo cp -p /boot/Image /boot/Image.org
$ sudo cp arch/arm64/boot/Image /boot/Image

Après cela, redémarrez (cela prendra un certain temps)

Vérification

Après avoir inséré le PX-Q1UD / PX-S1UD dans le port USB, Quand je lance dmesg,

terminal


[ 2402.115532] usb 1-2.1.1: new high-speed USB device number 10 using tegra-xusb
[ 2402.136510] usb 1-2.1.1: New USB device found, idVendor=3275, idProduct=0080
[ 2402.136515] usb 1-2.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2402.136519] usb 1-2.1.1: Product: PX-S1UD Digital TV Tuner
[ 2402.136522] usb 1-2.1.1: Manufacturer: PLEX Digital TV Tuner
[ 2402.137321] smsusb:smsusb_probe: board id=18, interface number 0
[ 2402.189130] DVB: registering new adapter (Siano Rio Digital Receiver)
[ 2402.189613] usb 1-2.1.1: DVB: registering adapter 0 frontend 0 (Siano Mobile Digital MDTV Receiver)...
[ 2402.189718] smsdvb:smsdvb_hotplug: DVB interface registered.
[ 2402.189721] smsmdtv:smscore_init_ir: IR port has not been detected
[ 2402.189724] smsusb:smsusb_probe: Device initialized with return code 0

Si un tel journal circule et que le périphérique existe sous / dev / dvb /, il réussit.

finalement

J'ai été surpris qu'il y ait beaucoup d'articles en japonais. Il est absorbé plus rapidement que l'anglais, donc c'est vraiment utile. Merci à ceux qui l'ont partagé sous forme d'article.

Recommended Posts

Utilisez PX-S1UD / PX-Q1UD avec Jetson nano
Utilisation du chainer avec Jetson TK1
Comment utiliser le wrapper Python PyRealsense de Realsense avec Jetson Nano
Exécutez le YOLO original avec Jetson Nano
configuration de jetson nano
Utilisez mecab-ipadic-neologd avec igo-python
Utilisez RTX 3090 avec PyTorch
Utiliser pipdeptree avec virtualenv
[Python] Utiliser JSON avec Python
Utiliser l'indicateur avec pd.merge
Utiliser Gentelella avec Django
Utiliser mecab avec Python 3
Utiliser tensorboard avec Chainer
Utiliser DynamoDB avec Python
Utiliser pip avec MSYS2
Utilisez Python 3.8 avec Anaconda
Utiliser les droits d'auteur avec Spacemacs
Configurer Jetson nano
Utiliser python avec docker
Utiliser TypeScript avec django-compresseur
Utilisez LESS avec Django
Essai de reconnaissance faciale facile avec Jetson Nano et caméra Web
Utiliser MySQL avec Django
Utiliser Enum avec SQLAlchemy
Utiliser tensorboard avec NNabla
Utiliser le GPS avec Edison
Utilisez nim avec Jupyter
Utiliser l'API Trello avec python
Utiliser la mémoire partagée avec une bibliothèque partagée
Utiliser des balises personnalisées avec PyYAML
Utiliser des graphiques directionnels avec networkx
Utiliser TensorFlow avec Intellij IDEA
Utiliser l'API Twitter avec Python
Utiliser pip avec Jupyter Notebook
Utiliser DATE_FORMAT avec le filtre SQLAlchemy
Utiliser TUN / TAP avec Python
Utilisez sqlite3 avec NAO (Pepper)
Utilisez les load_extensions de sqlite avec Pyramid
Utiliser les polices Windows 10 avec WSL
Utiliser SSL avec Celery + Redis
Utiliser Cython avec Jupyter Notebook
Utilisez Maxout + CNN avec Pylearn2
Utilisez WDC-433SU2M2 avec Manjaro Linux
Utilisez OpenBLAS avec numpy, scipy
Utiliser l'API subsonique avec python3
Utilisation de Sonicwall NetExtener avec Systemd
Utilisez prefetch_related commodément avec Django
Utiliser l'interpréteur AWS avec Pycharm
Utilisation de Bokeh avec IPython Notebook
Utiliser une plage de type Python avec Rust