Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- echo "Parcheando el módulo uvcvideo..."
- KERNEL_VERSION=$(uname -r)
- KERNEL_SOURCE_DIR="/usr/src/linux-source-6.16"
- #KERNEL_SOURCE_DIR="/usr/src/linux-source-${KERNEL_VERSION}"
- UVCVIDEO_SRC_DIR="${KERNEL_SOURCE_DIR}/drivers/media/usb/uvc"
- UVCVIDEO_DST_DIR="/lib/modules/${KERNEL_VERSION}/kernel/drivers/media/usb/uvc"
- UVCVIDEO_MODULE_FILENAME="uvcvideo.ko.zst"
- if [ ! -d "${KERNEL_SOURCE_DIR}" ]; then
- echo "Error: No se encontró el código fuente del kernel en ${KERNEL_SOURCE_DIR}."
- echo "Asegúrate de tener instalado el paquete linux-source para tu kernel actual."
- exit 1
- fi
- if [ ! -f "${UVCVIDEO_SRC_DIR}/uvc_driver.c" ]; then
- echo "Error: No se encontró el archivo uvc_driver.c en ${UVCVIDEO_SRC_DIR}."
- echo "Verifica que la ruta al código fuente del kernel sea correcta."
- exit 1
- fi
- if [ ! -f "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}" ]; then
- echo "Error: No se encontró el módulo uvcvideo.ko.zst original en ${UVCVIDEO_DST_DIR}."
- echo "Verifica que el módulo uvcvideo esté instalado en tu sistema."
- exit 1
- fi
- echo "Haciendo copia de seguridad del módulo uvcvideo original..."
- sudo cp "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}" "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}.bak"
- if [ $? -ne 0 ]; then
- echo "Error al hacer copia de seguridad del módulo uvcvideo original."
- exit 1
- fi
- echo "Editando uvc_driver.c para comentar la verificación del ID..."
- 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"
- sudo sed -i 's/^\s*dev_err(&dev->udev->dev, "Found multiple Units with ID %u\\n", id);/\/\/ &/' "${UVCVIDEO_SRC_DIR}/uvc_driver.c"
- sudo sed -i 's/^\s*return ERR_PTR(-EINVAL);/\/\/ &/' "${UVCVIDEO_SRC_DIR}/uvc_driver.c"
- if [ $? -ne 0 ]; then
- echo "Error al editar uvc_driver.c con sed."
- exit 1
- fi
- echo "Compilando el módulo uvcvideo parcheado..."
- sudo make -C "/lib/modules/${KERNEL_VERSION}/build" M="${UVCVIDEO_SRC_DIR}" modules
- if [ $? -ne 0 ]; then
- echo "Error al compilar el módulo uvcvideo. Revisa los mensajes de error de make para más detalles."
- exit 1
- fi
- echo "Comprimiendo y reemplazando el módulo uvcvideo..."
- sudo zstd "${UVCVIDEO_SRC_DIR}/uvcvideo.ko" -o "${UVCVIDEO_DST_DIR}/${UVCVIDEO_MODULE_FILENAME}"
- if [ $? -ne 0 ]; then
- echo "Error al comprimir el módulo uvcvideo."
- exit 1
- fi
- echo "Descargando y recargando el módulo uvcvideo..."
- sudo modprobe -r uvcvideo
- sudo modprobe uvcvideo
- if [ $? -ne 0 ]; then
- echo "Error al descargar/recargar el módulo uvcvideo."
- exit 1
- fi
- echo "Módulo uvcvideo parcheado y recargado correctamente."
- echo "Tu webcam debería funcionar ahora."
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment