You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.5 KiB
92 lines
3.5 KiB
#!/bin/bash
|
|
|
|
if [ $(ls /dev/video* | wc -l) -ne 0 ];
|
|
then
|
|
read -p "Remove all RealSense cameras attached. Hit any key when ready"
|
|
fi
|
|
|
|
#Include usability functions
|
|
source ./scripts/patch-utils.sh
|
|
|
|
#Additional packages to build patch
|
|
require_package libusb-1.0-0-dev
|
|
require_package libssl-dev
|
|
|
|
# Get the required tools and headers to build the kernel
|
|
sudo apt-get install linux-headers-generic build-essential git
|
|
|
|
LINUX_BRANCH=$(uname -r)
|
|
|
|
kernel_name="xenial"
|
|
# Get the linux kernel and change into source tree
|
|
[ ! -d ${kernel_name} ] && git clone https://git.launchpad.net/~wenchien/+git/xenial --depth 1
|
|
cd ${kernel_name}
|
|
|
|
# Verify that there are no trailing changes., warn the user to make corrective action if needed
|
|
if [ $(git status | grep 'modified:' | wc -l) -ne 0 ];
|
|
then
|
|
echo -e "\e[36mThe kernel has modified files:\e[0m"
|
|
git status | grep 'modified:'
|
|
echo -e "\e[36mProceeding will reset all local kernel changes. Press 'n' within 10 seconds to abort the procedure"
|
|
read -t 10 -r -p "Do you want to proceed? [Y/n]" response
|
|
response=${response,,} # tolower
|
|
if [[ $response =~ ^(n|N)$ ]];
|
|
then
|
|
echo -e "\e[41mScript has been aborted on user requiest. Please resolve the modified files are rerun\e[0m"
|
|
exit 1
|
|
else
|
|
echo -e "\e[0m"
|
|
printf "Resetting local changes in %s folder\n " ${kernel_name}
|
|
git reset --hard
|
|
echo -e "\e[32mUpdate the folder content with the latest from mainline branch\e[0m"
|
|
git pull origin master
|
|
fi
|
|
fi
|
|
|
|
#Check if we need to apply patches or get reload stock drivers (Developers' option)
|
|
[ "$#" -ne 0 -a "$1" == "reset" ] && reset_driver=1 || reset_driver=0
|
|
|
|
if [ $reset_driver -eq 1 ];
|
|
then
|
|
echo -e "\e[43mUser requested to rebuild and reinstall ubuntu-xenial stock drivers\e[0m"
|
|
else
|
|
# Patching kernel for RealSense devices
|
|
echo -e "\e[32mApplying realsense-metadata patch\e[0m"
|
|
patch -p1 < ../scripts/realsense-metadata-ubuntu-xenial-joule.patch
|
|
echo -e "\e[32mApplying realsense-hid patch\e[0m"
|
|
patch -p1 < ../scripts/realsense-hid-ubuntu-xenial-joule.patch
|
|
fi
|
|
|
|
# Copy configuration
|
|
sudo cp /usr/src/linux-headers-$(uname -r)/.config .
|
|
sudo cp /usr/src/linux-headers-$(uname -r)/Module.symvers .
|
|
|
|
# Basic build so we can build just the uvcvideo module
|
|
#yes "" | make silentoldconfig modules_prepare
|
|
make silentoldconfig modules_prepare
|
|
|
|
# Build the uvc, accel and gyro modules
|
|
KBASE=`pwd`
|
|
cd drivers/media/usb/uvc
|
|
sudo cp $KBASE/Module.symvers .
|
|
echo -e "\e[32mCompiling uvc module\e[0m"
|
|
make -C $KBASE M=$KBASE/drivers/media/usb/uvc/ modules
|
|
echo -e "\e[32mCompiling accelerometer and gyro modules\e[0m"
|
|
make -C $KBASE M=$KBASE/drivers/iio/accel modules
|
|
make -C $KBASE M=$KBASE/drivers/iio/gyro modules
|
|
|
|
# Copy the patched modules to a sane location
|
|
sudo cp $KBASE/drivers/media/usb/uvc/uvcvideo.ko ~/$LINUX_BRANCH-uvcvideo.ko
|
|
sudo cp $KBASE/drivers/iio/accel/hid-sensor-accel-3d.ko ~/$LINUX_BRANCH-hid-sensor-accel-3d.ko
|
|
sudo cp $KBASE/drivers/iio/gyro/hid-sensor-gyro-3d.ko ~/$LINUX_BRANCH-hid-sensor-gyro-3d.ko
|
|
|
|
echo -e "\e[32mPatched kernels modules created successfully\n\e[0m"
|
|
|
|
# Load the newly built modules
|
|
try_module_insert uvcvideo ~/$LINUX_BRANCH-uvcvideo.ko /lib/modules/`uname -r`/kernel/drivers/media/usb/uvc/uvcvideo.ko
|
|
try_module_insert hid-sensor-accel-3d ~/$LINUX_BRANCH-hid-sensor-accel-3d.ko /lib/modules/`uname -r`/kernel/drivers/iio/accel/hid-sensor-accel-3d.ko
|
|
try_module_insert hid-sensor-gyro-3d ~/$LINUX_BRANCH-hid-sensor-gyro-3d.ko /lib/modules/`uname -r`/kernel/drivers/iio/gyro/hid-sensor-gyro-3d.ko
|
|
|
|
|
|
echo -e "\e[92m\n\e[1mScript has completed. Please consult the installation guide for further instruction.\n\e[0m"
|