Synology DSM 7 USB serial drivers

Overview

Missing USB serial drivers for DSM 7

Supported drivers

  • cp210x
  • ch341

Supported platforms

  • apollolake (linux-4.4.x)
  • armada38x (linux-3.10.x-bsp)
  • armadaxp (linux-3.x)
  • avoton (linux-3.10.x)
  • braswell (linux-3.10.x)
  • geminilake (linux-4.4.x)
  • monaco (linux-3.10.x)
  • v1000 (linux-4.4.x)

Feel free to request other drivers or platforms. You can find out which platform your NAS is using on this page.

Installation

NB: the following steps will require SSH access and administrator rights. For the latter, either use sudo for each command or use su to log in as root.

  • The kernel modules for each supported platform can be found in modules/. Copy the required files to your Synology and move them to /lib/modules
  • To make DSM 7 automatically load the kernel modules at boot time, copy the file 90-usb-serial.conf to /usr/lib/modules-load.d/
  • Run systemctl restart systemd-modules-load to load the modules
Alternative method to load the modules at boot time
  • Copy the included file usb-serial-drivers.sh to /usr/local/etc/rc.d
  • Make sure that the file has executable permissions: chmod +x /usr/local/etc/rc.d/usb-serial-drivers.sh

After completing the previous step, run the script to load the modules:

# /usr/local/etc/rc.d/usb-serial-drivers.sh

Building from source

I've built these modules in an Ubuntu 18.04.5 virtual machine on my Synology NAS.

To set up the build environment, I followed the steps in this document. The different NAS targets/platforms can be installed next to each other.

To build the modules for a particular platform, I follow these steps:

sudo rm -fr /toolkit/build_env/ds.$platform-7.0/source
sudo /toolkit/pkgscripts-ng/PkgCreate.py -X 1 -P 1 -v 7.0 --min-sdk 7.0 -p $platform $module
cp -v /toolkit/build_env/ds.$platform-7.0/source/$module/*.ko /tmp

Replace $platform with the NAS platform, for example apollolake. Replace $module with the source directory name (found in sources/ in this repository) relevant for that particular platform. For example, apollolake requires the 4.4.x sources.

Put together, to build for apollolake, the commands become:

sudo rm -fr /toolkit/build_env/ds.apollolake-7.0/source
sudo /toolkit/pkgscripts-ng/PkgCreate.py -X 1 -P 1 -v 7.0 --min-sdk 7.0 -p apollolake 4.4.x
cp -v /toolkit/build_env/ds.apollolake-7.0/source/$module/*.ko /tmp

Due to some concurrency issues that I haven't bothered to look into, the second step (PkgCreate) sometimes fails with a compilation error. If that happens, start over.

The last step will copy the driver modules to /tmp

Disclaimer

I don't/can't test every driver. Use at your own peril.

Attribution

I'm using the source code (as-is) for the drivers included in the Linux kernel from the Synology Open Source Project.

Comments
  • DS1821+ / V1000 Troubleshooting

    DS1821+ / V1000 Troubleshooting

    Hello! I have recently upgraded from DS1817+ (Avoton) to DS1821+ (V1000). Both are running DSM 7.1-42661 Update 4.

    I have a Coral USB Accelerator that works fine in the DS1817+ with cp210x.ko loaded from this repo.

    I follow the same steps on the DS1821+ with cp210x.ko from the V1000 folder in this repo (copy cp210x.ko to /lib/modules, insmod, copy and run rc.d script), but it will not work. Frigate cannot detect the Coral.

    I have tried the drivers from Jadahl too, with the same result.

    $ uname -a
    Linux synbad 4.4.180+ #42661 SMP Mon Jun 27 15:11:30 CST 2022 x86_64 GNU/Linux synology_v1000_1821+
    
    $ lsmod |grep ^usbcore
    usbcore               200140  14 etxhci_hcd,usblp,uhci_hcd,usb_storage,cp210x,usbserial,ehci_hcd,ehci_pci,usbhid,ftdi_sio,cdc_acm,xhci_hcd,xhci_pci
    
    $ lsusb -cui
    |__usb1          1d6b:0002:0404 09  2.00  480MBit/s 0mA 1IF  (Linux 4.4.180+ xhci-hcd xHCI Host Controller 0000:09:00.3) hub
      |__1-1         0764:0501:0001 00  2.00   12MBit/s 2mA 1IF  (CPS CP1500PFCLCD 000000000000)
      1-1:1.0         (IF) 03:00:00 1EP  () usbfs
    |__usb3          1d6b:0002:0404 09  2.00  480MBit/s 0mA 1IF  (Linux 4.4.180+ xhci-hcd xHCI Host Controller 0000:09:00.4) hub
      |__3-2         f400:f400:0100 00  2.00  480MBit/s 200mA 1IF  (Synology DiskStation 6500228E14345A35)
      3-2:1.0         (IF) 08:06:50 2EPs () usb-storage host10 (synoboot)
    |__usb4          1d6b:0003:0404 09  3.00 5000MBit/s 0mA 1IF  (Linux 4.4.180+ xhci-hcd xHCI Host Controller 0000:09:00.4) hub
      |__4-1         1a6e:089a:0100 00  3.10 5000MBit/s 896mA 1IF  ( ffffffd1ffffffb2ffffffdbffffffad)
      4-1:1.0         (IF) fe:01:02 0EPs ()
    
    $ sudo cat /dev/bus/usb/devices
    T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
    D:  Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=1a6e ProdID=089a Rev= 1.00
    S:  Product=USBDevice
    S:  SerialNumber=ffffffd1ffffffb2ffffffdbffffffad
    C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=896mA
    I:* If#= 0 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=02 Driver=(none)
    

    I thought the Driver=(none) in /dev/bus/usb/devices indicated a problem, but it looks the same on the DS1817+ where it's working.

    I also tried to build the drivers myself, but I was not able to create a suitable VM/container to do the build in. My filesystem isn't BTRFS so I can't use a VM, and I couldn't figure out how to do it in a docker container.

    I tried with a powered USB hub, but the behavior was the same.

    Any help is greatly appreciated.

    opened by toddrob99 22
  • Error with DSM 7.1

    Error with DSM 7.1

    if i want to use the cp2102 driver with DSM 7.1.1-42962 Update 1 on the Avoton Platform (DS 1817+) i get the following error:

    stty: /dev/ttyUSB0: Inappropriate ioctl for device

    driver is loaded: lsmod: usbcore 179491 14 ch341,etxhci_hcd,usblp,uhci_hcd,usb_storage,cp210x,usbserial,ehci_hcd,ehci_pci,pl2303,usbhid,ftdi_sio,cdc_acm,xhci_hcd

    lsusb: |__usb2 1d6b:0002:0310 09 2.00 480MBit/s 0mA 1IF (Linux 3.10.108 etxhci_hcd-170202 Etron xHCI Host Controller 0000:04:00.0) hub |__2-2 10c4:ea60:0100 00 1.10 12MBit/s 100mA 1IF (Silicon Labs CP2102 USB to UART Bridge Controller 0040)

    before the update to 7.1 it was working fine. could you please provide a new driver for DMS 7.1?

    Best regards

    opened by viserion 7
  • Building for DSM 7.1

    Building for DSM 7.1

    Unexpectedly broke my setup at home by updating DSM to 7.1, my zigbee dongle no longer works... In hindsight not a great move, since half the home now has no light anymore 🤦‍♂️ . After some googling I found myself here, where already some great work has been for DSM 7.0.

    Anyway, the old modules are no longer loading:

    insmod: ERROR: could not insert module /lib/modules/ch341.ko: Invalid module format
    

    Since the instructions for building seem quite doable, tried to build the new modules for 7.1 myself, but hit a bit of snag there. Maybe someone knows what I'm doing wrong. My Synology is a DS216Play, so the braswell platform. If I understand correctly, after setting up the environment, to build the modules the command would be:

    sudo toolkit/pkgscripts-ng/PkgCreate.py -X 1 -P 1 -v 7.1 --min-sdk 7.1 -p braswell 4.4.x
    

    But it fails with:

    scripts/Makefile.build:314: recipe for target '//source/4.4.x/pl2303.o' failed
    make[2]: *** [//source/4.4.x/pl2303.o] Error 1
    Makefile:1229: recipe for target '_module_//source/4.4.x' failed
    make[1]: *** [_module_//source/4.4.x] Error 2
    make[1]: Leaving directory '/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-7.1/build'
    Makefile:8: recipe for target 'ch341.ko' failed
    make: *** [ch341.ko] Error 2
    [Error] Build project fail!
    Time cost: 00:00:02 [Build-->4.4.x]
    [INFO] Build 4.4.x finished!
    I got the following error:
    ======  Find pattern [Error] ======
    15: make[2]: *** [//source/4.4.x/ch341.o] Error 1
    17: make[1]: *** [_module_//source/4.4.x] Error 2
    20: make: *** [cp210x.ko] Error 2
    40: make[2]: *** [//source/4.4.x/pl2303.o] Error 1
    42: make[1]: *** [_module_//source/4.4.x] Error 2
    45: make: *** [ch341.ko] Error 2
    46: [Error] Build project fail!
    ======  Find pattern [error:] ======
    26: //source/4.4.x/pl2303.c:556:8: error: implicit declaration of function 'C_CMSPAR'; did you mean 'CMSPAR'? [-Werror=implicit-function-declaration]
    31: //source/4.4.x/pl2303.c:755:18: error: 'struct usb_serial_port' has no member named 'minor'
    34: //source/4.4.x/pl2303.c:756:20: error: 'struct usb_serial_port' has no member named 'port_number'; did you mean 'number'?
    

    Something that I'm not doing correct here? I'm running this by the way in a ubuntu 18 VM on my desktop, instead of on the Synology since it's not super powerful.

    opened by Daanoz 5
  • Add driver for PL2303 on avoton

    Add driver for PL2303 on avoton

    I've tried by myself, but...

    Is anyone successful building the PL2303 ? alternatively I can purchase another USB-2-Serial that is nativly supported if any.

    thanks !

    `

                Start to run "Build Package"
    

    [avoton] env PackageName=3.10.x /pkgscripts-ng/SynoBuild --avoton -c --min-sdk 7.0 3.10.x Set cache size limit to 8.0 Gbytes Statistics cleared [INFO] projectList=3.10.x [INFO] Start to build 3.10.x. [Error] There is no build scripts for 3.10.x `

    opened by fdebrus 4
  • R1000 versus V1000?

    R1000 versus V1000?

    Are the R1000 drivers suitable for a V1000 device? I tried to build from source using "v1000" as the architecture, but got an error suggesting there is no support for V1000.

    I have a new DS1522+ and don't see a way forward to get driver support for my itead Zigbee 3.0 dongle.

    opened by IdahoSnakeHouse 3
  • cp210x.ko Unknown symbol in module: DS720+ geminilake

    cp210x.ko Unknown symbol in module: DS720+ geminilake

    Current DSM Version: DSM 7.0.1-42218 Update 3

    sh-4.4$ uname -a Linux mushkoNAS 4.4.180+ #42218 SMP Mon Oct 18 19:16:55 CST 2021 x86_64 GNU/Linux synology_geminilake_720+

    sh-4.4$ sudo insmod /lib/modules/cp210x.ko insmod: ERROR: could not insert module /lib/modules/cp210x.ko: Unknown symbol in module

    dmesg output: [ 2610.398136] cp210x: module verification failed: signature and/or required key missing - tainting kernel [ 2610.408753] cp210x: Unknown symbol usb_serial_generic_open (err 0) [ 2610.415673] cp210x: Unknown symbol usb_serial_generic_close (err 0) [ 2610.422700] cp210x: Unknown symbol usb_serial_deregister_drivers (err 0) [ 2610.430196] cp210x: Unknown symbol usb_serial_register_drivers (err 0)

    opened by khvMX 3
  • Job for systemd-modules-load.service failed

    Job for systemd-modules-load.service failed

    Hello, I am trying to install the driver on my Syno DS918+ (Apollolake) and I have follow these steps ::

    • copy the required files to your Synology and move them to /lib/modules
    • copy the file 90-usb-serial.conf to /usr/lib/modules-load.d/

    But when I ran systemctl restart systemd-modules-load to load the modules I experienced the following error ::

    • Job for systemd-modules-load.service failed. See "systemctl status systemd-modules-load.service" and "journalctl -xe" for details.

    journalctl -xe says ::

    Aug 24 18:35:13 Syno918 sudo[8170]:     NTY: TTY=pts/0 ; PWD=/usr/lib/modules-load.d ; USER=root ; COMMAND=/b
    in/systemctl restart systemd-modules-load
    Aug 24 18:35:13 Syno918 sudo[8170]: pam_unix(sudo:session): session opened for user root by NTY(uid=1028)
    Aug 24 18:35:13 Syno918 systemd[1]: Starting Load Kernel Modules...
    Aug 24 18:35:13 Syno918 systemd-modules-load[8173]: Failed to find module 'cp210x'
    Aug 24 18:35:13 Syno918 systemd-modules-load[8173]: Failed to find module 'ch341'
    Aug 24 18:35:13 Syno918 systemd[1]: systemd-modules-load.service: main process exited, code=exited, status=1/FA
    ILURE
    Aug 24 18:35:13 Syno918 systemd[1]: Failed to start Load Kernel Modules.
    Aug 24 18:35:13 Syno918 systemd[1]: Unit systemd-modules-load.service entered failed state.
    Aug 24 18:35:13 Syno918 systemd[1]: systemd-modules-load.service failed.
    

    But the 2 modules are really in /lib/modules and I have change them to root:root and 744

    Is someone have an idea to solve this ? Thank you for your great job

    opened by abergui 3
  • PL2303 Apollolake

    PL2303 Apollolake

    Hi, Thanks a lot for putting those resources available! Could you please add PL2303 available for Apollolake (DS218+ for me) please? I have a Zigate Zigbee (v1) using this serial interface, I could make it work using the following link https://web.archive.org/web/20220126180837/http://www.jadahl.com/iperf-arp-scan/DSM_7.0/apollolake/

    but it would be nice if you could add it so that we can only keep your GH as a single source and reference! Thanks a lot

    opened by erich74 2
  • DS2419+ denverton support

    DS2419+ denverton support

    Hi, need DSM7.1 driver for denverton cpu with 4.4.180+ kernel. Tried compiling myself, (many times, different platforms) but even though instructions appear relatively easy, was well beyond my capabilities. Thanks

    opened by sneery 2
  • realtek8125 pci-e drivers dsm7

    realtek8125 pci-e drivers dsm7

    Greeting

    i would like some help, i have a NIC 2.5GB with realtek chip and i own a synology rs2421. if it is not to much to ask i would like someone to create a pak for this pci-e card

    opened by jdcruz78 2
  • MCE USB IR receiver support?

    MCE USB IR receiver support?

    Sorry for the off-topic question, but I was able to get my Z-Wave USB dongle working perfectly with your instructions. Do you know if there is something similar that can be done for a generic MCE USB infrared receiver? It is recognized without any special drivers in most other Linux installs. Thanks.

    opened by cncb-gh 2
  • web

    web

    Hi!! Are you ok? You dissapeared from internet since Augost 2021!! I hope you are well.

    I only want to tell you, your web is offline ;) see you soon jadahl!

    opened by mapoloco 2
  • USB audio drivers?

    USB audio drivers?

    Hi! I wanted to ask, what are the specific USB drivers for audio and how to install them? Formerly I used USB output from Synology's Audio Station to Topping E30 DAC. I installed drivers from here but with hasn't turned audio on. From what I understand the DAC uses XMOS XU208 chip (but I may err)

    opened by TemplarB 4
  • insmod: Invalid module format on DS218+/Apollolake

    insmod: Invalid module format on DS218+/Apollolake

    Using insmod with the cp210.ko leads to the error: Invalid module format.

    I've read that in some comparable aces the version from Jadahl did work - but unfortunately it is not longer availabale

    Anyone an idea?

    opened by nmehnert73 2
  • PL2303 for cedarview (RS814+)

    PL2303 for cedarview (RS814+)

    Hi, can you provide the dms7 driver for cedarview platform? I have to connect a pl2303 usb serial converter used by homebridge (docker). Thanks in advance.

    opened by miticolars 12
Owner
Robert Klep
Experienced freelance frontend (JS/CSS/React) and backend (Node) developer.
Robert Klep
The function is based on MQTT. When the original serial of ESP8266/ESP32 cannot be used, it can replace serial print.

MqttPrint and MqttMonitor The function is based on MQTT. When the original serial of ESP8266/ESP32 cannot be used, it can replace serial print. MqttPr

fw-box 4 Sep 28, 2022
John Walker 21 Nov 13, 2022
USB serial TTY for the Arduino Uno with ILI9341 LCD screen shield

ILI9341TTY USB serial TTY for the Arduino Uno with ILI9341 LCD screen shield [video] Semigraphics, ANSI, unicode, and an Arduino LCD-screen terminal I

M Rule 72 Sep 30, 2022
ESP32 software USB host through general IO pins. We can connect up to 4 USB-LS HID (keyboard mouse joystick) devices simultaneously.

esp32_usb_soft_host esp32 USB-LS pure software host thru general IO pins. Up to 4 HID devices simultaneously. board ~$3 :https://www.aliexpress.com/pr

Samsonov Dima 304 Nov 25, 2022
ESP8266 software USB host through general IO pins. We can connect up to 2 USB-LS HID (keyboard mouse joystick) devices simultaneously.

esp8266_usb_soft_host Test for esp8266 usb host . Works with ESP-IDF v3.4 80MHz and 160MHz. WorkInProgress Test run with mouse & combined mouse & keyb

Samsonov Dima 28 Sep 1, 2022
Tiny and portable usb host and device stack for mcu with usb ip

Tiny and portable usb host and device stack for mcu with usb ip

sakumisu 514 Nov 29, 2022
USB-C_PCB_experiments - USB-C ports made from a flex PCB and an ATtiny84A

USB-C PCB Experiments This is part of an ongoing series of projects involving creative interpretations of the USB mechanical standards. You've probabl

Sam Ettinger 23 Sep 5, 2022
Anotter USB temperature logger that can record up to four channels with thermocouple or NTCs connected via CDC directly or SCPI to USB.

temperature-logger Anotter USB temperature logger that can record up to four channels with thermocouple or NTCs connected via CDC directly or SCPI to

Jana Marie Hemsing 50 Nov 24, 2022
A framework for implementing block device drivers in user space

BDUS is a Linux 4.0+ framework for developing block devices in user space. More specifically, it enables you to implement block device drivers as regu

Alberto Faria 26 May 24, 2022
J2534 drivers for various Macchina hardware

Macchina-J2534 J2534 drivers for various Macchina hardware This is a experimental driver which is built in Rust, and is unofficially ported to Linux a

Ashcon Mohseninia 43 Nov 7, 2022
Open Redragon drivers for Linux. Currently only supporting some mice.

OpenDragon Open Redragon drivers for Linux. Currently only supporting some mice. Table of contents Support Installation Building from source Usage Sou

Alexa Ognjanovic 72 Nov 7, 2022
fortnite cheat external that uses efi drivers and is updated

fortnite-external-efi-drivers fortnite cheat external that uses efi drivers and is updated ALL CREDITS TO CHASE: https://github.com/Chase1803 i just u

null 11 Jun 5, 2022
Generic force-feedback vibrator HAL for upstream haptics drivers

vibrator-ff, a generic vibrator HAL for force feedback haptics. Most downstream haptics / vibrator drivers are implemented as LED class devices, this

AOSP Mainline 4 Feb 2, 2022
BSOD: Binary-only Scalable fuzzing Of device Drivers

bsod-kernel-fuzzing This repository contains the implementations described in "BSOD: Binary-only Scalable fuzzing Of device Drivers". The paper and th

Fabian Toepfer 130 Nov 9, 2022
Full Firmware Package for the STM32WB series: HAL+LL drivers, CMSIS, BSP, MW, plus a set of Projects

STM32Cube is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.

STMicroelectronics 140 Nov 28, 2022
Free and Open Source API and drivers for immersive technology.

OpenHMD This project aims to provide a Free and Open Source API and drivers for immersive technology, such as head mounted displays with built in head

null 1.1k Nov 28, 2022
Aims to be an accurate C port of Impulse Tracker 2.15's IT replayer (with selectable IT2 sound drivers)

it2play Aims to be an accurate C port of Impulse Tracker 2.15's IT replayer (with selectable IT2 sound drivers). This is a direct port of the original

Olav Sørensen 18 Sep 27, 2022
GraphicsFuzz provides tools for automatically finding and simplifying bugs in graphics drivers, specifically graphics shader compilers.

GraphicsFuzz GraphicsFuzz is a set of tools for testing shader compilers GraphicsFuzz provides tools for automatically finding and simplifying bugs in

Google 516 Nov 29, 2022
Collection of additional Ethernet drivers for ESP-IDF

Collection of additional Ethernet drivers for ESP-IDF This repository aims to store additional Ethernet drivers which are not available directly in ES

Espressif Systems 5 Oct 19, 2022