---
# System prepended metadata

title: Build QNAP NAS CDC-ACM Driver

---

# Build QNAP NAS CDC-ACM Driver

* 安裝Container Station
* 依據QTS版本下載對應的QNAP Kernel source : http://sourceforge.net/projects/qosgpl/
EX: /QNAP NAS GPL Source/QTS 4.4.0/GPL_QTS-4.4.0-20190806_Kernel.tar.gz
* 將下載檔案上傳至目標NAS的Public資料夾
* SSH進入NAS，切換目錄至`/share/Public` :
`cd /share/Public`
* 解壓縮檔案 : 
`tar xzf GPL_QTS-4.4.0-20190806_Kernel.tar.gz`
* 進入Docker環境 :
`docker run --rm -ti -v $PWD:/build -w /build ubuntu`
* In the directory GPL_QTS you have the tree "src" with all the OS release
and the tree "kernel_cfg" with the exact compiler configuration file for your QNAP model.

* Copy the compiler configuration file in the right place of the source.
Tricky to understand because X letter signify "any" (ie. TSX31X is suitable for TS231P)
 EX : `cp GPL_QTS/kernel_cfg/TS-X41/linux-4.2-arm.config GPL_QTS/src/linux-4.2/.config`
 
* 切換到 `GPL_QTS/src/linux-4.2/`
* 安裝build tools : 
`apt update && apt install -y make gcc g++ libncurses5-dev bc`

* `make menuconfig`
* 切換 **Device Drivers  ---> USB support  ---> USB Modem (CDC ACM) support**，然後按下`M`加入到kernel module後儲存

* `make prepare`
* `make scripts`

* 開始build kernel module : 
`make modules SUBDIRS=drivers/usb/gadget`