# Telegram : caméra uvcvideo éteinte puis à l'envers (résolu)

## pti-rem

Bonjour,

Mon transportable dispose d'une caméra intégrée de 2 mégapixels.

Il y a un voyant qui indique quand elle fonctionne.

```
rem@n73sm ~ $ lsusb | grep Cam

Bus 001 Device 003: ID 04f2:b1bb Chicony Electronics Co., Ltd 2.0M UVC WebCam

rem@n73sm ~ $
```

J'utilise le mode Web de Telegram avec www-client/google-chrome ou www-client/brave-bin (versions stables)

Je parviens à passer des appels vocaux.

Ma caméra est reconnue dans les navigateurs.

Les sites peuvent me demander d'autoriser la webcam.

Je n'ai pas cette demande sur le site https://web.telegram.org/k/ quand je passe un appel vidéo.

C'est Telegram Web 1.4.3 K (177) Chrome 102, Linux

```
rem@n73sm ~ $ v4l2-ctl --list-formats-ext

ioctl: VIDIOC_ENUM_FMT

   Type: Video Capture

   [0]: 'YUYV' (YUYV 4:2:2)

      Size: Discrete 640x480

         Interval: Discrete 0.033s (30.000 fps)

         Interval: Discrete 0.050s (20.000 fps)

      Size: Discrete 320x240

         Interval: Discrete 0.033s (30.000 fps)

         Interval: Discrete 0.050s (20.000 fps)

      Size: Discrete 160x120

         Interval: Discrete 0.033s (30.000 fps)

         Interval: Discrete 0.050s (20.000 fps)

      Size: Discrete 352x288

         Interval: Discrete 0.033s (30.000 fps)

         Interval: Discrete 0.050s (20.000 fps)

      Size: Discrete 176x144

         Interval: Discrete 0.033s (30.000 fps)

         Interval: Discrete 0.050s (20.000 fps)

      Size: Discrete 800x600

         Interval: Discrete 0.050s (20.000 fps)

      Size: Discrete 1280x960

         Interval: Discrete 0.125s (8.000 fps)

      Size: Discrete 1600x1200

         Interval: Discrete 0.200s (5.000 fps)

rem@n73sm ~ $ 

rem@n73sm ~ $ v4l2-ctl --set-parm=30 --set-fmt-video=width=800,height=600,pixelformat=YUYV --device /dev/video0

Frame rate set to 20.000 fps

rem@n73sm ~ $
```

https://fr.webcamtests.com/ m'a bien proposé d'en faire la demande et puis je l'ai acceptée. L'image est à l'envers mais c'est un autre problème.

La résolution fixée n'est pas conservée.

 *fr.webcamtests.com wrote:*   

> Les tests ont été effectués avec succès. Les résultats sont affichés dans le tableau "Information sur la webcam". N'oubliez pas de laisser un commentaire sur votre webcam.
> 
> Information sur la webcam
> 
> Nom de la webcam:	USB2.0 2.0M UVC WebCam
> ...

 

Le V4L2 viewer qvidcap fonctionne bien tout comme vlc.

cheese me fait un gros pâté :

```
rem@n73sm ~ $ cheese

Abandon (core dumped)

rem@n73sm ~ $
```

J'ai effacé les cookies pour telegram.org et web.telegram.org

J'autorise manuellement la caméra pour web.telegram.org mais cela ne change rien ; elle reste éteinte lors d'un appel vidéo.

Je ne comprends pas où peut se situer le problème.

C'est trop frustrant vu le temps que j'y passe !

Merci pour toute aide apportée  :Smile: Last edited by pti-rem on Mon Jun 13, 2022 7:04 pm; edited 7 times in total

----------

## pti-rem

J'ai installé www-client/google-chrome-unstable pour essayer.

J'ai une indication supplémentaire dans https://web.telegram.org/k/ (je n'avais pas maintenu shift)

 *Quote:*   

> Something went wrong
> 
> Service Worker is disabled. Streaming media may not be supported. Try reloading the page without holding <Shift> key
> 
> OK

 

Comment activer Service Worker ?

Et je vois des GLX is not present et des EGL_NOT_INITIALIZED

Que faire ?

```
rem@n73sm ~ $ google-chrome-unstable 

[9396:9396:0528/121431.513112:ERROR:angle_platform_impl.cc(43)] Display.cpp:1006 (initialize): ANGLE Display::initialize error 12289: GLX is not present.

[9396:9396:0528/121431.513323:ERROR:gl_surface_egl.cc(822)] EGL Driver message (Critical) eglInitialize: GLX is not present.

[9396:9396:0528/121431.513403:ERROR:gl_surface_egl.cc(1352)] eglInitialize OpenGL failed with error EGL_NOT_INITIALIZED, trying next display type

[9396:9396:0528/121431.513554:ERROR:angle_platform_impl.cc(43)] Display.cpp:1006 (initialize): ANGLE Display::initialize error 12289: GLX is not present.

[9396:9396:0528/121431.513613:ERROR:gl_surface_egl.cc(822)] EGL Driver message (Critical) eglInitialize: GLX is not present.

[9396:9396:0528/121431.513655:ERROR:gl_surface_egl.cc(1352)] eglInitialize OpenGLES failed with error EGL_NOT_INITIALIZED

[9396:9396:0528/121431.513694:ERROR:gl_ozone_egl.cc(21)] GLSurfaceEGL::InitializeOneOff failed.

[9396:9396:0528/121431.515906:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization

[9429:9429:0528/121431.865986:ERROR:angle_platform_impl.cc(43)] Display.cpp:1006 (initialize): ANGLE Display::initialize error 12289: GLX is not present.

[9429:9429:0528/121431.866831:ERROR:gl_surface_egl.cc(822)] EGL Driver message (Critical) eglInitialize: GLX is not present.

[9429:9429:0528/121431.870520:ERROR:gl_surface_egl.cc(1352)] eglInitialize OpenGL failed with error EGL_NOT_INITIALIZED, trying next display type

[9429:9429:0528/121431.870721:ERROR:angle_platform_impl.cc(43)] Display.cpp:1006 (initialize): ANGLE Display::initialize error 12289: GLX is not present.

[9429:9429:0528/121431.870783:ERROR:gl_surface_egl.cc(822)] EGL Driver message (Critical) eglInitialize: GLX is not present.

[9429:9429:0528/121431.870827:ERROR:gl_surface_egl.cc(1352)] eglInitialize OpenGLES failed with error EGL_NOT_INITIALIZED

[9429:9429:0528/121431.870868:ERROR:gl_ozone_egl.cc(21)] GLSurfaceEGL::InitializeOneOff failed.

[9429:9429:0528/121431.873314:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization

[9354:9381:0528/121613.183290:ERROR:mcs_client.cc(707)]   Error code: 500  Error message: Cannot parse data.

[9354:9381:0528/121613.183334:ERROR:mcs_client.cc(709)] Failed to log in to GCM, resetting connection.

[9354:9381:0528/121613.631943:ERROR:mcs_client.cc(707)]   Error code: 500  Error message: Cannot parse data.

[9354:9381:0528/121613.631989:ERROR:mcs_client.cc(709)] Failed to log in to GCM, resetting connection.
```

----------

## pti-rem

J'ai un système GPU Optimus

```
rem@n73sm ~ $ lspci | grep VGA

00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)

01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 620M/630M/635M/640M LE] (rev a1)

rem@n73sm ~ $ 
```

Dont je désactive volontairement la partie nVidia

```
rem@n73sm ~ $ cat /proc/acpi/bbswitch 

0000:01:00.0 OFF

rem@n73sm ~ $
```

Et un amorçage que je ne comprends plus vraiment

```
rem@n73sm ~ $ dmesg | grep i915

[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.19.237-gentoo root=UUID=b56ef48b-982a-499d-b02d-4442ac784b8a ro acpi_osi=Linux nogpumanager i915.enable_hd_vgaarb=1 enable_hd_vgaarb=1 mds=full,nosmt init=/lib/systemd/systemd quiet

[    0.390122] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.19.237-gentoo root=UUID=b56ef48b-982a-499d-b02d-4442ac784b8a ro acpi_osi=Linux nogpumanager i915.enable_hd_vgaarb=1 enable_hd_vgaarb=1 mds=full,nosmt init=/lib/systemd/systemd quiet

[    1.643274] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem

[    1.667685] [drm] Initialized i915 1.6.0 20180719 for 0000:00:02.0 on minor 0

[    1.951921] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device

rem@n73sm ~ $
```

----------

## pti-rem

 *pti-rem wrote:*   

> J'ai abandonné SliM au profit d'un login Xfce automatique sans gestionnaire d'affichage.
> 
> https://wiki.gentoo.org/wiki/Automatic_login_to_virtual_console#systemd
> 
> https://wiki.gentoo.org/wiki/X_without_Display_Manager#systemd

 

Mon /var/log/Xorg.0.log ... du 17 mai ! donc pas forcément utile.

Je n'ai plus de log de Xorg à jour ; trop bizarre ; J'ai l'impression que la sortie se marque dans le tty1 choisi.

```
rem@n73sm ~ $ ls -al /var/log/Xorg.0.log

-rw-r--r-- 1 root root 34238 17 mai   12:40 /var/log/Xorg.0.log

rem@n73sm ~ $ uptime

 09:30:29 up 21:45,  1 user,  load average: 0,46, 0,58, 0,53

rem@n73sm ~ $
```

```
rem@n73sm ~ $ glxinfo 

name of display: :0.0

Error: couldn't find RGB GLX visual or fbconfig

rem@n73sm ~ $
```

Je ne sais pas ce qui concerne réellement la caméra.

https://fr.webcamtests.com/ sait me demander l'accès et me présenter la vidéo.

Alors que https://web.telegram.org/k/ ne le fait pas et je suis sans vidéo de ma caméra.

J'ai bien la vidéo de mon correspondant par contre.

C'est juste que ma caméra ne s'allume pas lors d'un appel vidéo.

Je n'ai pas avancé d'un pouce.

Je pourrais essayer un noyau plus récent. Je ne suis pas sûr que cela soit pertinent.

Je ne sais plus quoi faire des options d'amorçage « acpi_osi=Linux nogpumanager i915.enable_hd_vgaarb=1 enable_hd_vgaarb=1 mds=full,nosmt »

« mds=full,nosmt » étant il me semble une mitigation de vulnérabilité CPU.

----------

## pti-rem

Bonjour,

J'avais deux périphériques vidéo ; j'ai supprimé /dev/video1 et cela n'a rien changé ; et heureusement que udev me le recrée.

L'utilisateur rem est membre du groupe video.

```
rem@n73sm ~ $ ls /dev/video* -al

crw-rw----+ 1 root video 81, 0 28 mai   11:44 /dev/video0

crw-rw----+ 1 root video 81, 1 28 mai   11:44 /dev/video1

rem@n73sm ~ $ sudo rm -v /dev/video1 

'/dev/video1' supprimé

rem@n73sm ~ $ ls /dev/video* -al

crw-rw----+ 1 root video 81, 0 28 mai   11:44 /dev/video0

rem@n73sm ~ $
```

Je me rends compte finalement que les modes web de Telegram ne me permettent pas d'utiliser ma caméra.

Je n'ai que peu cherché et pas expérimenté une astuce logicielle de périphérique de caméra virtuelle comme https://github.com/CatxFish/obs-virtual-cam par exemple.

Je passe donc en mode application depuis l'adresse https://desktop.telegram.org/ (j'ai mis du temps à trouver ce mode, ce n'est pas un mode web de type Desktop entry mais bien une application)

```
rem@n73sm ~/Téléchargements $ ls -alh Telegram/

total 120M

drwxr-xr-x  2 rem rem 4,0K 30 mai   09:29 .

drwxr-xr-x 62 rem rem 128K 30 mai   09:29 ..

-rwxr-xr-x  1 rem rem 115M 26 avril 12:39 Telegram

-rwxr-xr-x  1 rem rem 5,1M 26 avril 12:36 Updater

rem@n73sm ~/Téléchargements $
```

J'ai exploré les réglages et j'ai bien vu l'image de ma caméra mais à laquelle il faut que j'applique une rotation à 180° (l'image est à l'envers)

L'application peut s'iconifier et se lancer au démarrage.

```
rem@n73sm ~ $ lsmod | grep video

uvcvideo              110592  0

videobuf2_vmalloc      16384  1 uvcvideo

videobuf2_memops       16384  1 videobuf2_vmalloc

videobuf2_v4l2         24576  1 uvcvideo

videobuf2_common       45056  2 videobuf2_v4l2,uvcvideo

rem@n73sm ~ $
```

Je serais enchanté de connaître une méthode simple pour faire le vflip vidéo  :Smile: 

Je vois https://wiki.archlinux.org/title/webcam_setup#Invert_the_video_stream mais cela ne me convient pas vraiment...

Je vois aussi https://www.berlios.de/software/linux-uvc/ ...

https://narkive.com/c4iENRYu.1 (un fil de discussions remontant à treize ans pour vflip et hflip en compilant un module uvcvideo patché, en anglais)

```
[ 1578.004152] usbcore: deregistering interface driver uvcvideo

[ 1581.908163] uvcvideo: unknown parameter 'vflip' ignored

[ 1582.054614] uvcvideo: Found UVC 1.00 device USB2.0 2.0M UVC WebCam (04f2:b1bb)
```

Selon https://github.com/dfu/linux-uvc_flip pour un autre modèle Asus, la caméra serait montée à l'envers !

http://www.ideasonboard.org/uvc/#footnote-3

 *Quote:*   

> 3 This camera module is known to be mounted upside-down in some notebooks. Applications that use the libv4l library should display the video correctly, as libv4l detects upside-down cameras and rotates the image automatically.
> 
> See Hans de Goede's post on the linux-uvc-devel mailing list for more information. For applications that don't use libv4l, try holding your computer upside-down.
> 
> 3 Ce module caméra est connu pour être monté à l'envers dans certains ordinateurs portables. Les applications qui utilisent la bibliothèque libv4l devraient afficher la vidéo correctement, car libv4l détecte les caméras montées à l'envers et fait pivoter l'image automatiquement. Voir le post de Hans de Goede sur la liste de diffusion linux-uvc-devel pour plus d'informations. Pour les applications qui n'utilisent pas libv4l, essayez de tenir votre ordinateur à l'envers.

 Last edited by pti-rem on Wed Jun 08, 2022 6:17 am; edited 2 times in total

----------

## pti-rem

Uvcvideo webcam flipped [solved]

https://forums.gentoo.org/viewtopic-t-787593.html me donne une solution !

Mais je ne vends pas la peau de l'ours....

```
rem@n73sm ~ $ export LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so

rem@n73sm ~ $ ls /usr/lib32/libv4l/v4l1compat.so

ERROR: ld.so: object '/usr/lib32/libv4l/v4l1compat.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

ls: impossible d'accéder à '/usr/lib32/libv4l/v4l1compat.so': Aucun fichier ou dossier de ce type

rem@n73sm ~ $ su -

Dernière connexion : lundi 30 mai 2022 à 11:26:18 CEST sur pts/0

n73sm ~ # ls /usr/lib32/libv4l/v4l1compat.so

ls: impossible d'accéder à '/usr/lib32/libv4l/v4l1compat.so': Aucun fichier ou dossier de ce type

n73sm ~ # locate v4l1compat.so

/usr/lib/v4l1compat.so

/usr/lib/libv4l/v4l1compat.so

/usr/lib64/v4l1compat.so

/usr/lib64/libv4l/v4l1compat.so

n73sm ~ # exit

déconnexion

rem@n73sm ~ $ export LD_PRELOAD=/usr/lib64/libv4l/v4l1compat.so

rem@n73sm ~ $ Téléchargements/Telegram/Telegram 

[ALSOFT] (EE) Failed to set real-time priority for thread: Opération non permise (1)

error: : cannot open

error: : cannot open

error: : cannot open

qt.gui.imageio.jpeg: Corrupt JPEG data: premature end of data segment

[ALSOFT] (EE) Failed to set real-time priority for thread: Opération non permise (1)

QObject::~QObject: Timers cannot be stopped from another thread

QObject::~QObject: Timers cannot be stopped from another thread

rem@n73sm ~ $
```

J'ai quitté Telegram avec le menu de l'icone.

J'avais l'image de la caméra dans le bon sens dans les paramètres des appels  :Smile: 

Je modifie le démarrage automatique en conséquence ; j'ai choisi de mettre un démarrage on login :

```
/bin/sh -c 'export LD_PRELOAD=/usr/lib64/libv4l/v4l1compat.so ; /home/rem/Téléchargements/Telegram/Telegram -workdir /home/rem/.local/share/TelegramDesktop/ -autostart'
```

Il ne faudrait pas que la rétrocompatibilité v4l1 s'applique partout... Je ne sais pas vraiment comment va impacter mon système cet export LD_PRELOAD utilisé ainsi.Last edited by pti-rem on Wed Jun 08, 2022 6:09 am; edited 1 time in total

----------

## pti-rem

Avec la version 3.7.3 Desktop, je ne peux pas initier un appel vidéo mais seulement un appel audio et ensuite basculer en vidéo quand mon correspondant décroche.

Je n'ai que très peu de correspondants et nous nous appelons rarement.

Avec la configuration v4l1compat, j'ai rejeté par erreur un appel vidéo entrant et cela a chassé mon périphérique camera de la configuration des appels.

Je décide donc de vérifier d'abord sans v4l1compat.

 *à un correspondant, pti-rem  wrote:*   

> Essaie de m'appeler en vidéo quand tu pourras.
> 
> Si ma vidéo fonctionne, je serai probablement la tête en bas.
> 
> Si ce premier test est concluant pour la vidéo, j'essaierai de faire la rotation.
> ...

 

appel 1 : ça fonctionne tête en bas alors je passe en mode v4l1compat.

appel 2 : un correspondant "app. de bureau win10" m'appelle, je décroche, il passe en vidéo, je le vois, je passe en vidéo et il me voit également et dans le bon sens !

appel 2 bis : je rappelle ce correspondant, il décroche, je passe en vidéo puis lui aussi après et nous nous voyons correctement.

Suite à l'appel 2 bis, mon périphérique camera est chassé de la configuration des appels.

Je dois relancer Telegram pour le retrouver et je dois surtout comprendre ce phénomène.

J'ai l'impression que c'est suivant la façon de terminer l'appel.

Je vais établir un protocole pour saisir le maillon faible.

- L'appelant met sa vidéo d'abord et ensuite c'est au tour de l'appelé

-

13 juin, appel 3 : un correspondant "app. Android 11" m'appelle, je décroche, nous sommes directement en vidéo dans le bon sens. Je raccroche en premier.

C'était avec la version 3.7.5 bêta. Mon périphérique camera est resté dans la configuration des appels.

Depuis l'appel 3 compris, j'ai changé la manière de lancer Telegram qui est désormais en dernière version bêta :

- Je laisse dans Telegram les options de démarrage automatique minimisé

- Je décoche l'entrée Telegram Desktop de Paramètres / Session et démarrage / Démarrage automatique d'application

- J'y crée une nouvelle entrée nommée T qui exécute /home/rem/bin/t avec le déclencheur on login

```
rem@n73sm ~ $ which t

/home/rem/bin/t

rem@n73sm ~ $ cat /home/rem/bin/t

/bin/kill $( /usr/bin/pidof Telegram ) &> /dev/null

/bin/sh -c 'export LD_PRELOAD=/usr/lib64/libv4l/v4l1compat.so && /home/rem/Téléchargements/Telegram/Telegram -workdir /home/rem/.local/share/TelegramDesktop/ -autostart &> /home/rem/Telegram.log' &

rem@n73sm ~ $
```

La simple commande t me permet de relancer rapidement Telegram si mon périphérique camera est chassé de la configuration des appels.Last edited by pti-rem on Mon Jun 13, 2022 7:07 pm; edited 5 times in total

----------

## MrRoy3

As tu essayé l'application Telegram qui est dans ::gentoo? Il existe net-im/telegram-desktop et net-im/telegram-desktop-bin. Ca peut faire une différence selon la façon dont le binaire de Telegram est fait (je suppose que c'est un AppImage).

----------

## pti-rem

Bonjour MrRoy3

Je n'ai pas essayé depuis le dépôt gentoo ; je n'y avais même pas pensé avant.

Les versions de ce dépôt ne suivent pas de près les releases du code source à https://github.com/telegramdesktop/tdesktop (changelog.txt)

J'ai une option activée de mise à jour automatique et une autre désactivée pour ne pas installer les versions bêta.

edit du 12 juin : j'ai activé l'installation automatique des versions bêta.

 *Quote:*   

> Ca peut faire une différence selon la façon dont le binaire de Telegram est fait

 

Oui, peut-être, mais ma caméra reste la même ainsi que le code source pour une version donnée.

C'est le matériel qui est monté à l'envers et la v4l1compat le détecte et retourne le flux vidéo logiciellement.

C'est une manière simple de comprendre.

La meilleure solution serait peut-être de patcher le module uvcvideo mais je n'ai encore rien trouvé de récent à ce sujet.

C'est en fait probablement une mauvaise idée, voir https://linux-uvc-devel.narkive.com/c4iENRYu/vflip-hflip-options-for-uvcvideo#post11 (en français ci-dessous)

Il faut d'abord que je termine mes essais avec quelques appels vidéo avec la v4l1compat.

Merci

```
rem@n73sm ~ $ eix telegram

* net-im/telegram-desktop

     Available versions:  3.5.2-r1 3.6.1-r1 {+X +dbus enchant +hunspell +jemalloc screencast +spell wayland}

     Homepage:            https://desktop.telegram.org

     Description:         Official desktop client for Telegram

* net-im/telegram-desktop-bin

     Available versions:  ~3.7.3

     Homepage:            https://desktop.telegram.org

     Description:         Official desktop client for Telegram (binary package)

Found 2 matches

rem@n73sm ~ $
```

 *extrait du lien traduit, Laurent Pinchart (13 years ago)  wrote:*   

> Un peu de contexte d'abord.
> 
> La plupart des caméras UVC sont composées d'un capteur vidéo et d'un pont USB.
> 
> Les capteurs peuvent généralement être lus dans n'importe quelle direction, offrant ainsi des options de retournement horizontal et vertical.
> ...

 

----------

