freddyncalm

patch_uvcvideo.sh

Oct 9th, 2025 (edited)
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.72 KB | Fixit | 0 0
  1. #!/bin/bash
  2.  
  3. echo "Parcheando el módulo uvcvideo..."
  4.  
  5. KERNEL_VERSION=$(uname -r)
  6. KERNEL_SOURCE_DIR="/usr/src/linux-source-6.16"
  7. #KERNEL_SOURCE_DIR="/usr/src/linux-source-${KERNEL_VERSION}"
  8. UVCVIDEO_SRC_DIR="${KERNEL_SOURCE_DIR}/drivers/media/usb/uvc"
  9. UVCVIDEO_DST_DIR="/lib/modules/${KERNEL_VERSION}/kernel/drivers/media/usb/uvc"
  10. UVCVIDEO_MODULE_FILENAME="uvcvideo.ko.zst"
  11.  
  12. if [ ! -d "${KERNEL_SOURCE_DIR}" ]; then
  13.   echo "Error: No se encontró el código fuente del kernel en ${KERNEL_SOURCE_DIR}."
  14.   echo "Asegúrate de tener instalado el paquete linux-source para tu kernel actual."
  15.   exit 1
  16. fi
  17.  
  18. if [ ! -f "${UVCVIDEO_SRC_DIR}/uvc_driver.c" ]; then
  19.   echo "Error: No se encontró el archivo uvc_driver.c en ${UVCVIDEO_SRC_DIR}."
  20.   echo "Verifica que la ruta al código fuente del kernel sea correcta."
  21.   exit 1
  22. fi
  23.  
  24. if [ ! -f "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}" ]; then
  25.   echo "Error: No se encontró el módulo uvcvideo.ko.zst original en ${UVCVIDEO_DST_DIR}."
  26.   echo "Verifica que el módulo uvcvideo esté instalado en tu sistema."
  27.   exit 1
  28. fi
  29.  
  30. echo "Haciendo copia de seguridad del módulo uvcvideo original..."
  31. sudo cp "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}" "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}.bak"
  32. if [ $? -ne 0 ]; then
  33.   echo "Error al hacer copia de seguridad del módulo uvcvideo original."
  34.   exit 1
  35. fi
  36.  
  37. echo "Editando uvc_driver.c para comentar la verificación del ID..."
  38. sudo sed -i 's/^\s*\/\*\sPer UVC 1.1\+\ spec 3\.7\.2, the ID is unique\.\s\*\/\s*if \(uvc_entity_by_id\(dev, id\)\) {/\/\/ &/g' "${UVCVIDEO_SRC_DIR}/uvc_driver.c"
  39. sudo sed -i 's/^\s*dev_err(&dev->udev->dev, "Found multiple Units with ID %u\\n", id);/\/\/ &/' "${UVCVIDEO_SRC_DIR}/uvc_driver.c"
  40. sudo sed -i 's/^\s*return ERR_PTR(-EINVAL);/\/\/ &/' "${UVCVIDEO_SRC_DIR}/uvc_driver.c"
  41. if [ $? -ne 0 ]; then
  42.   echo "Error al editar uvc_driver.c con sed."
  43.   exit 1
  44. fi
  45.  
  46. echo "Compilando el módulo uvcvideo parcheado..."
  47. sudo make -C "/lib/modules/${KERNEL_VERSION}/build" M="${UVCVIDEO_SRC_DIR}" modules
  48. if [ $? -ne 0 ]; then
  49.   echo "Error al compilar el módulo uvcvideo. Revisa los mensajes de error de make para más detalles."
  50.   exit 1
  51. fi
  52.  
  53. echo "Comprimiendo y reemplazando el módulo uvcvideo..."
  54. sudo zstd "${UVCVIDEO_SRC_DIR}/uvcvideo.ko" -o "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}"
  55. if [ $? -ne 0 ]; then
  56.   echo "Error al comprimir el módulo uvcvideo."
  57.   exit 1
  58. fi
  59.  
  60. echo "Descargando y recargando el módulo uvcvideo..."
  61. sudo modprobe -r uvcvideo
  62. sudo modprobe uvcvideo
  63. if [ $? -ne 0 ]; then
  64.   echo "Error al descargar/recargar el módulo uvcvideo."
  65.   exit 1
  66. fi
  67.  
  68. echo "Módulo uvcvideo parcheado y recargado correctamente."
  69. echo "Tu webcam debería funcionar ahora."
  70.  
  71. exit 0
Advertisement
Add Comment
Please, Sign In to add comment