Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/linux/Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
ifeq ($(origin CC),undefined)
CC := gcc
$(info QUD: CC was no set, defaulting to gcc)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo: no -> not

endif
ifneq (, $(findstring ++, $(CC)))
$(warning QUD warning: CC ($(CC)) appears to be a C++ compiler, Forcing to gcc because kernel modules must be compiled as C.)
CC := gcc
endif
export CC
obj-y := InfParser/ qcom_usb/ qcom_usbnet/ qcom_serial/
PWD := $(shell pwd)
KDIR := /lib/modules/$(shell uname -r)/build
Expand Down
167 changes: 93 additions & 74 deletions src/linux/qcom_drivers.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,17 @@ if [ ! -f "$QCOM_MAKE_DIR/keyctl" ]; then
echo -e ${RED}"Error: keyutils not found, installing..\n"${RESET}
fi

# if [[ ! -f "$QCOM_MAKE_DIR/mokutil" ]] || [[ ! -f "$QCOM_MAKE_DIR/keyctl" ]]; then
# if [[ $OSName =~ "Red Hat Enterprise Linux" ]]; then
# sudo dnf install -y mokutil
# sudo dnf install -y keyutils
# fi

# if [[ $OSName =~ "Ubuntu" ]]; then
# sudo apt-get install -y mokutil
# sudo apt-get install -y keyutils
# fi
# fi
if [[ ! -f "$QCOM_MAKE_DIR/mokutil" ]] || [[ ! -f "$QCOM_MAKE_DIR/keyctl" ]]; then
if [[ $OSName =~ "Red Hat Enterprise Linux" ]]; then
sudo dnf install -y mokutil
sudo dnf install -y keyutils
fi

if [[ $OSName =~ "Ubuntu" ]]; then
sudo apt-get install -y mokutil
sudo apt-get install -y keyutils
fi
fi

if [[ $OSName =~ "Fedora Linux" ]]; then
sudo dnf install -y make automake gcc gcc-c++ kernel-devel
Expand Down Expand Up @@ -123,6 +123,7 @@ else
else
echo -e "$DEST_QCOM_USBNET_PATH does not exist, nothing to remove"
fi

if [ -d $DEST_MODEM_SERIAL_PATH ]; then
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_MODEM_SERIAL_PATH
if [ ! -d $DEST_MODEM_SERIAL_PATH ]; then
Expand All @@ -134,6 +135,17 @@ else
echo -e "$DEST_MODEM_SERIAL_PATH does not exist, nothing to remove"
fi

if [ -d $DEST_QCOM_USBINF_PARSER_PATH ]; then
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_QCOM_USBINF_PARSER_PATH
if [ ! -d $DEST_QCOM_USBINF_PARSER_PATH ]; then
echo -e "Successfully removed $DEST_QCOM_USBINF_PARSER_PATH"
else
echo -e ${RED}"Failed to remove $DEST_QCOM_USBINF_PARSER_PATH"${RESET}
fi
else
echo -e "$DEST_QCOM_USBINF_PARSER_PATH does not exist, nothing to remove"
fi

if [ -f $QCOM_UDEV_PATH/qcom-usb-devices.rules ]; then
rm -r $QCOM_UDEV_PATH/qcom-usb-devices.rules
if [ ! -f $QCOM_UDEV_PATH/qcom-usb-devices.rules ]; then
Expand Down Expand Up @@ -289,7 +301,7 @@ else
#change to permission to default mode
$QCOM_LN_RM_MK_DIR/chmod 644 $MODULE_BLACKLIST_CONFIG/blacklist.conf

echo -e "Removing modules for /etc/modules."
echo -e "Removed modules for /etc/modules."
MODUPDATE="`grep -r qtiDevInf /etc/modules`"
if [ "$MODUPDATE" == "qtiDevInf" ]; then
sed -i '/qtiDevInf/d' /etc/modules
Expand All @@ -313,19 +325,23 @@ else
fi
fi

echo -e "Removing modules from $MODULE_BLACKLIST_PATH"
if [ -f $MODULE_BLACKLIST_PATH/$QCOM_MODEM_SERIAL_NAME ]; then
echo -e "Removed module from $MODULE_BLACKLIST_PATH/$QCOM_MODEM_SERIAL_NAME"
rm -rf $MODULE_BLACKLIST_PATH/$QCOM_MODEM_SERIAL_NAME
fi
echo -e "Removing modules from $QCOM_USB_KERNEL_PATH"

if [ -f $QCOM_USB_KERNEL_PATH/$QCOM_USB_MODULE_NAME ]; then
echo -e "Removed module from $QCOM_USB_KERNEL_PATH/$QCOM_USB_MODULE_NAME"
rm -rf $QCOM_USB_KERNEL_PATH/$QCOM_USB_MODULE_NAME
fi

if [ -f $QCOM_USB_KERNEL_PATH/$QCOM_MODULE_INF_NAME ]; then
echo -e "Removed module from $QCOM_USB_KERNEL_PATH/$QCOM_MODULE_INF_NAME"
rm -rf $QCOM_USB_KERNEL_PATH/$QCOM_MODULE_INF_NAME
fi
echo -e "Removing modules from $QCOM_USBNET_AND_QMI_WWAN"

if [ -f $QCOM_USBNET_AND_QMI_WWAN/$QCOM_USBNET_MODULE_NAME ]; then
echo -e "Removed module from $QCOM_USBNET_AND_QMI_WWAN/$QCOM_USBNET_MODULE_NAME"
rm -rf $QCOM_USBNET_AND_QMI_WWAN/$QCOM_USBNET_MODULE_NAME
fi
# update modules.dep and modules.alias
Expand All @@ -349,18 +365,22 @@ fi

######## Installation ###########

# if [[ $OSName =~ "Ubuntu" ]]; then
# sudo apt-get update
# sudo apt-get install -y build-essential
# sudo apt-get install -y gawk
# sudo apt-get install -y python3-tk
# fi
if [[ $OSName =~ "Ubuntu" ]]; then
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y gawk
sudo apt-get install -y python3-tk
fi

# IFS=. read -r major_ver minor_ver patch_ver <<< "$KERNEL_VERSION"
# if [[ $OSName =~ "Ubuntu 22." ]] && (( "$major_ver" >= 6 && "$minor_ver" >= 5 )); then
# echo -e "Installing gcc 12 version ..."
# sudo apt install -y gcc-12 g++-12
# fi
IFS=. read -r major_ver minor_ver patch_ver <<< "$KERNEL_VERSION"
if [[ $OSName =~ "Ubuntu 22." ]] && (( $major_ver >= 6 && $minor_ver >= 5 )); then
echo -e "Installing gcc 12 version ..."
sudo apt install -y gcc-12 g++-12
fi
if [[ $OSName =~ "Ubuntu 24." ]] && (( $major_ver >= 6 && $minor_ver >= 14 )); then
echo -e "Installing gcc 14 version ..."
sudo apt install -y gcc-14 g++-14
fi

echo -e "${CYAN}======================================================================================="
echo -e "=======================================================================================${RESET}"
Expand All @@ -382,7 +402,7 @@ echo $DEST_QCOM_USBNET_PATH

# this script will use in qik uninstallation process
if [ -f "$DEST_QUD_PATH/qcom_drivers.sh" ]; then
echo -e "Delete and copy again (qcom_drivers.sh)"${RESET}
echo -e "Delete old file and copy again (qcom_drivers.sh)"${RESET}
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_QUD_PATH/qcom_drivers.sh
$QCOM_LN_RM_MK_DIR/cp -rf ./qcom_drivers.sh $DEST_QUD_PATH/
else
Expand Down Expand Up @@ -583,20 +603,10 @@ if [ ! -f $DEST_QCOM_USB_PATH/qcom_event.h ]; then
fi

# All modules makefile
# $QCOM_LN_RM_MK_DIR/cp ./Makefile $DEST_QCOM_USB_PATH/
# if [ ! -f $DEST_QCOM_USB_PATH/Makefile ]; then
# echo -e "${RED}Error: Failed to copy '$QCOM_USB_DIR/Makefile' to installation path"${RESET}
# $QCOM_LN_RM_MK_DIR/rm -rf $DEST_QCOM_USB_PATH
# exit 1
# fi

if [ -d $DEST_INS_RMNET_PATH ]; then
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_INS_RMNET_PATH
fi

$QCOM_LN_RM_MK_DIR/mkdir -p $DEST_INS_RMNET_PATH
if [ ! -d $DEST_INS_RMNET_PATH ]; then
echo -e "${RED}Error: Failed to create installation path, please run installer under root."${RESET}
$QCOM_LN_RM_MK_DIR/cp ./Makefile $DEST_QUD_PATH/
if [ ! -f $DEST_QUD_PATH/Makefile ]; then
echo -e "${RED}Error: Failed to copy '$DEST_QUD_PATH/Makefile' to installation path"${RESET}
#$QCOM_LN_RM_MK_DIR/rm -rf $DEST_QUD_PATH
exit 1
fi

Expand Down Expand Up @@ -689,47 +699,49 @@ $QCOM_LN_RM_MK_DIR/chmod 644 $DEST_QCOM_USBNET_PATH/qtiwwan.inf

#DEST_SIGN_PATH=/opt/qcom/QUD/sign
#OLD_DEST_SIGN_PATH=/opt/QTI/sign
if [[ -d $OLD_DEST_SIGN_PATH ]] && [[ -f $OLD_DEST_SIGN_PATH/Signkey_pub.der ]]; then
QCOM_OLD_PUBLIC_KEY_VERIFY=`mokutil --test-key $OLD_DEST_SIGN_PATH/Signkey_pub.der`
if [[ $QCOM_OLD_PUBLIC_KEY_VERIFY = "$OLD_DEST_SIGN_PATH/Signkey_pub.der is already enrolled" ]]; then
$QCOM_LN_RM_MK_DIR/cp -rf $OLD_DEST_SIGN_PATH/* $DEST_SIGN_PATH/
$QCOM_LN_RM_MK_DIR/chmod -R 777 $DEST_SIGN_PATH
$QCOM_LN_RM_MK_DIR/chmod 644 $DEST_SIGN_PATH/signReadme.txt
$QCOM_LN_RM_MK_DIR/chmod 755 $DEST_SIGN_PATH/Signkey_pub.der
$QCOM_LN_RM_MK_DIR/chmod 755 $DEST_SIGN_PATH/Signkey.priv
fi
elif [[ -d $DEST_SIGN_PATH ]]; then
QCOM_PUBLIC_KEY_VERIFY=`mokutil --test-key $DEST_SIGN_PATH/Signkey_pub.der`
if [[ $QCOM_PUBLIC_KEY_VERIFY = "$DEST_SIGN_PATH/Signkey_pub.der is already enrolled" ]]; then
echo -e ${GREEN}"$DEST_SIGN_PATH/Signkey_pub.der is enrolled"${RESET}
else
echo -e ${RED}"Signkey_pub.der is not enrolled or doesn't exist"${RESET}
$QCOM_LN_RM_MK_DIR/cp -rf ./sign/SignConf.config $DEST_SIGN_PATH
$QCOM_LN_RM_MK_DIR/chmod 777 $DEST_SIGN_PATH/SignConf.config
awk -i inplace -v name=`hostname` '{gsub(/O = /,"O = "name)}1' $DEST_SIGN_PATH/SignConf.config
awk -i inplace -v name=`hostname` '{gsub(/CN = /,"CN = "name" Signing Key")}1' $DEST_SIGN_PATH/SignConf.config
awk -i inplace -v name=`hostname` '{gsub(/emailAddress = /,"emailAddress = "name"@no-reply.com")}1' $DEST_SIGN_PATH/SignConf.config

if [ ! -f $DEST_SIGN_PATH/SignConf.config ]; then
echo -e ${RED}"Error: Failed to copy SignConf.config installation path"${RESET}
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_SIGN_PATH
exit 1
if [[ $QCOM_SECURE_BOOT_CHECK = "SecureBoot enabled" ]]; then
if [[ -d $OLD_DEST_SIGN_PATH ]] && [[ -f $OLD_DEST_SIGN_PATH/Signkey_pub.der ]]; then
QCOM_OLD_PUBLIC_KEY_VERIFY=`mokutil --test-key $OLD_DEST_SIGN_PATH/Signkey_pub.der`
if [[ $QCOM_OLD_PUBLIC_KEY_VERIFY = "$OLD_DEST_SIGN_PATH/Signkey_pub.der is already enrolled" ]]; then
$QCOM_LN_RM_MK_DIR/cp -rf $OLD_DEST_SIGN_PATH/* $DEST_SIGN_PATH/
$QCOM_LN_RM_MK_DIR/chmod -R 777 $DEST_SIGN_PATH
$QCOM_LN_RM_MK_DIR/chmod 644 $DEST_SIGN_PATH/signReadme.txt
$QCOM_LN_RM_MK_DIR/chmod 755 $DEST_SIGN_PATH/Signkey_pub.der
$QCOM_LN_RM_MK_DIR/chmod 755 $DEST_SIGN_PATH/Signkey.priv
fi
elif [[ -d $DEST_SIGN_PATH ]]; then
QCOM_PUBLIC_KEY_VERIFY=`mokutil --test-key $DEST_SIGN_PATH/Signkey_pub.der`
if [[ $QCOM_PUBLIC_KEY_VERIFY = "$DEST_SIGN_PATH/Signkey_pub.der is already enrolled" ]]; then
echo -e ${GREEN}"$DEST_SIGN_PATH/Signkey_pub.der is enrolled"${RESET}
else
echo -e ${RED}"Signkey_pub.der is not enrolled or doesn't exist"${RESET}
$QCOM_LN_RM_MK_DIR/cp -rf ./sign/SignConf.config $DEST_SIGN_PATH
$QCOM_LN_RM_MK_DIR/chmod 777 $DEST_SIGN_PATH/SignConf.config
awk -i inplace -v name=`hostname` '{gsub(/O = /,"O = "name)}1' $DEST_SIGN_PATH/SignConf.config
awk -i inplace -v name=`hostname` '{gsub(/CN = /,"CN = "name" Signing Key")}1' $DEST_SIGN_PATH/SignConf.config
awk -i inplace -v name=`hostname` '{gsub(/emailAddress = /,"emailAddress = "name"@no-reply.com")}1' $DEST_SIGN_PATH/SignConf.config

if [ ! -f $DEST_SIGN_PATH/SignConf.config ]; then
echo -e ${RED}"Error: Failed to copy SignConf.config installation path"${RESET}
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_SIGN_PATH
exit 1
fi

$QCOM_LN_RM_MK_DIR/cp -rf ./sign/signReadme.txt $DEST_SIGN_PATH
if [ ! -f $DEST_SIGN_PATH/signReadme.txt ]; then
echo -e ${RED}"Error: Failed to copy signReadme.txt installation path"${RESET}
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_SIGN_PATH
exit 1
$QCOM_LN_RM_MK_DIR/cp -rf ./sign/signReadme.txt $DEST_SIGN_PATH
if [ ! -f $DEST_SIGN_PATH/signReadme.txt ]; then
echo -e ${RED}"Error: Failed to copy signReadme.txt installation path"${RESET}
$QCOM_LN_RM_MK_DIR/rm -rf $DEST_SIGN_PATH
exit 1
fi
$QCOM_LN_RM_MK_DIR/chmod 644 $DEST_SIGN_PATH/signReadme.txt
fi
$QCOM_LN_RM_MK_DIR/chmod 644 $DEST_SIGN_PATH/signReadme.txt
fi
fi

if [[ $QCOM_SECURE_BOOT_CHECK = "SecureBoot enabled" ]]; then
echo -e ${GREEN}"SecureBoot enabled"${RESET}
QCOM_PUBLIC_KEY_VERIFY=`mokutil --test-key $DEST_SIGN_PATH/Signkey_pub.der`
if [ -f $DEST_SIGN_PATH/Signkey_pub.der ]; then
QCOM_PUBLIC_KEY_VERIFY=`mokutil --test-key $DEST_SIGN_PATH/Signkey_pub.der`
if [[ $QCOM_PUBLIC_KEY_VERIFY = "$DEST_SIGN_PATH/Signkey_pub.der is already enrolled" ]]; then
echo -e ${CYAN}"==========================================================="
echo -e ${GREEN}"$DEST_SIGN_PATH/Signkey_pub.der is enrolled"
Expand Down Expand Up @@ -887,7 +899,7 @@ if [ "`grep -nr 'Qualcomm clients' $MODULE_BLACKLIST_CONFIG/blacklist.conf`" !=
sed -i '/# qcom_usbnet, qcom_usb, qtiDevInf driver/d' $MODULE_BLACKLIST_CONFIG/blacklist.conf
fi
echo -e "# Blacklist these module so that Qualcomm clients use only" >> $MODULE_BLACKLIST_CONFIG/blacklist.conf
echo -e "# qcom_usbnet, qcom_usb, qtiDevInf driver" >> $MODULE_BLACKLIST_CONFIG/blacklist.conf
echo -e "# qcom_usbnet, qcom_usb driver" >> $MODULE_BLACKLIST_CONFIG/blacklist.conf

MOD_EXIST="`grep -nr 'blacklist qcserial' $MODULE_BLACKLIST_CONFIG/blacklist.conf`"
if [ "$MOD_EXIST" != "" ]; then
Expand Down Expand Up @@ -1088,6 +1100,13 @@ if [ "$MODLOADED" == "" ]; then
exit 1
fi

$QCOM_LN_RM_MK_DIR/rm -rf $QCOM_USB_KERNEL_PATH/$QCOM_MODULE_INF_NAME
$QCOM_LN_RM_MK_DIR/cp -rf $DEST_QCOM_USBINF_PARSER_PATH/$QCOM_MODULE_INF_NAME $QCOM_USB_KERNEL_PATH
if [ ! -f $QCOM_USB_KERNEL_PATH/$QCOM_MODULE_INF_NAME ]; then
echo -e ${RED}"Error: Failed to copy $QCOM_MODULE_INF_NAME to $QCOM_USB_KERNEL_PATH path."${RESET}
exit 1
fi

$QCOM_LN_RM_MK_DIR/rm -rf $QCOM_USB_KERNEL_PATH/$QCOM_USB_MODULE_NAME
$QCOM_LN_RM_MK_DIR/cp -rf $DEST_QCOM_USB_PATH/$QCOM_USB_MODULE_NAME $QCOM_USB_KERNEL_PATH
if [ ! -f $QCOM_USB_KERNEL_PATH/$QCOM_USB_MODULE_NAME ]; then
Expand Down
2 changes: 1 addition & 1 deletion src/linux/qcom_usb/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
QCOM_USB_OUTPUTDIR=/lib/modules/$(shell uname -r)/kernel/drivers/usb/misc
EXTRA_CFLAGS:= -U LPC_TEST_ONLY
EXTRA_CFLAGS:= -U QCUSB_TEST_ONLY

#obj-m := qcom_usb.o ../InfParser/qtiDevInf.o
obj-m := qcom_usb.o
Expand Down
12 changes: 9 additions & 3 deletions src/linux/qcom_usb/qcom_usb.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,17 @@
#include <linux/sched/signal.h>
#endif

// #define QCUSB_TEST_ONLY

#include "qcom_event.h"
#include "qtiDevInf.h"

#ifndef RHEL_RELEASE_CODE
#define RHEL_RELEASE_CODE 0
#endif

#ifndef RHEL_RELEASE_VERSION
#define RHEL_RELEASE_VERSION(x,y) 0
#endif

#define BULK_URB_LIST 4
#define QTIDEV_TX_TIMEOUT 2000 // in milliseconds
#define QTIDEV_RX_TIMEOUT 2000 // in milliseconds
Expand All @@ -60,7 +66,7 @@

#define QTIDEV_RX_NOTIFY_POOL_SZ 32
#define QTIDEV_TX_BUF_POOL_SZ 32
#define QTIDEV_DRIVER_NAME "QTIDEV_QDSS_DPL_DIAG_Subsystem"
#define QTIDEV_DRIVER_NAME "QCOM_QDSS_DPL_DIAG_Subsystem"
#define QTIDEV_USB_CLASS_NAME "GobiUSB"
#define QTIDEV_PORT_CLASS_NAME "GobiPorts"
//#define QTIDEV_SERIAL_CLASS_NAME "GobiSerial"
Expand Down
Loading
Loading