ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ стСк для ΠΊΠ°ΠΌΠ΅Ρ€ с интСрфСйсом MIPI

Ганс Π”Π΅ Π“ΠΎΠ΅Π΄Π΅ (Hans de Goede), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Fedora Linux, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Red Hat, прСдставил Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ FOSDEM 2024 ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ стСк для ΠΊΠ°ΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ интСрфСйса MIPI (Mobile Industry Processor Interface). ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ стСк ΠΏΠΎΠΊΠ° Π½Π΅ принят Π² состав ядра Linux ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° libcamera, Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ Π΄ΠΎΡΡ‚ΠΈΠ³ΡˆΠΈΠΉ состояния, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ для тСстирования ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ ΠΊΡ€ΡƒΠ³ΠΎΠΌ энтузиастов. Π Π°Π±ΠΎΡ‚Π° стСка ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° с MIPI-ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° Π±Π°Π·Π΅ сСнсоров ov2740, ov01a1s ΠΈ hi556, задСйствованных Π² Ρ‚Π°ΠΊΠΈΡ… Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ°Ρ…, ΠΊΠ°ΠΊ Lenovo ThinkPad X1 yoga gen 8, Dell Latitude 9420 ΠΈ HP Spectre x360 13.5 2023.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ MIPI примСняСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… модСлях Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΎΠ² вмСсто Ρ€Π°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ шинС USB ΠΎΡ‚ устройств, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… стандарт UVC (USB Video Class). MIPI прСдоставляСт доступ ΠΊ сСнсору ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ CSI-рСсивСр (Camera Serial Interface) ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² CPU процСссор ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (ISP, Image Signal Processor), ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ формирования изобраТСния Π½Π° основС сырых (raw) Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… ΠΎΡ‚ сСнсора. Компания Intel прСдоставляСт Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с MIPI-ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ Π² Linux Ρ‡Π΅Ρ€Π΅Π· IPU6 (Imaging Processing Unit) Π² процСссорах Intel Tiger Lake, Alder Lake, Raptor Lake ΠΈ Meteor Lake.

Главная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² для MIPI-ΠΊΠ°ΠΌΠ΅Ρ€ связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ интСрфСйс ISP-процСссора ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π½Ρ‘ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ производитСлями CPU ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΡƒΡŽ Ρ‚Π°ΠΉΠ½Ρƒ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ возникшСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Linaro ΠΈ Red Hat Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ процСссора ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ — SoftISP, которая позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с MIPI-ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ Π±Π΅Π· использования ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (SoftISP ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° IPU6 ISP).

РСализация SoftISP ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² состав ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° libcamera, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ стСк для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ, Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ TV-Ρ‚ΡŽΠ½Π΅Ρ€Π°ΠΌΠΈ Π² Linux, Android ΠΈ ChromeOS. Помимо SoftISP стСк для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с MIPI-ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для сСнсоров ov2740 ΠΈ ΠΊΠΎΠ΄ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ядрС Linux CSI-рСсивСра, ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ IPU6 процСссоров Intel.

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ с ядром Linux ΠΈ libcamera, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ измСнСния, доступны Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ COPR для установки Π² Fedora Linux 39. Для Π·Π°Ρ…Π²Π°Ρ‚Π° Π²ΠΈΠ΄Π΅ΠΎ с MIPI-ΠΊΠ°ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΉ сСрвСр Pipewire. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Pipewire ΡƒΠΆΠ΅ принята Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ libwebrtc. Π’ Firefox Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Pipewire ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΌΡƒ для использования с WebRTC, начиная с выпуска 122. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Pipewire Π² Firefox ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Π² about:config ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° «media.webrtc.camera.allow-pipewire».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ