Open-source project
robertklep/dsm7-usb-serial-drivers avatar
robertklep/dsm7-usb-serial-drivers

dsm7-usb-serial-drivers: USB serial modules for Synology NAS boxes

Synology DSM 7 USB serial drivers

706 stars108 forksHTMLLicense varies

At a glance

What is it?
This repository collects prebuilt kernel modules that let a Synology DSM 7 NAS talk to USB serial devices such as CP210x, CH341, PL2303 and TI USB 3410/5052 chipsets, which Synology's own kernel does not ship drivers for. Installation is a copy, a chmod and a boot script, and the drivers are binary files you fetch rather than compile.
Who is it for?
dsm7-usb-serial-drivers suits a Synology owner whose USB serial adapter is not recognised by DSM 7, most often because they run Home Assistant, Node-RED or Zigbee2MQTT with a Zigbee stick and want the device passed into a container.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly HTML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The gap is Synology's own kernel, not your adapter

The problem this repository solves is narrow and real. Synology's DSM 7 kernel does not include drivers for a set of USB serial chipsets that are extremely common in the maker and smart home world, and the symptom is that the device simply does not appear when you plug it in. The supported drivers listed are cp210x, ch341, pl2303, which the README notes is not for all platforms, and ti_usb_3410_5052, also not for all platforms. The README is careful to add that some USB serial devices may already be supported natively by Synology using its USB CDC ACM driver at /lib/modules/cdc-acm.ko, so the first thing to check is whether the thing you want already works. The repository also states plainly that it is only for USB serial device drivers and does not, and will not, provide drivers for other types of USB devices such as TV tuners, Bluetooth or audio, and it points at a separate project for modules supporting certain USB Ethernet adapters. The audience is therefore a Synology owner with one specific missing driver, not someone assembling a general-purpose hardware support library.

Drivers are per platform and per DSM version

The modules directory is the whole catalogue, and its structure is the thing to understand before you download anything. Synology NAS boxes ship with different CPU architectures, and a kernel module is compiled for one of them, so a module built for one platform will not load on another. The README points at a Synology knowledge base page listing models with a Package Arch column, which is the second last column, and gives a shell command as the alternative way to find your own platform:

bash
grep platform_name /etc/synoinfo.conf

Coverage is uneven by design of the timeline. Drivers for DSM 7.0 are available for most platforms, while drivers for DSM 7.1 and 7.2 are slowly being added, and the README carries a note for DSM 7.3 that points back to the 7.0 line: since Synology does not update the kernel versions for older models very often, the drivers from a previous DSM version will usually work fine on newer versions, with most 7.3 drivers also working on 7.4. The practical instruction is to try before opening an issue, and when you do open one, to include the kernel version of your platform, which you can find with uname -a from a terminal.

Downloading binary modules from GitHub takes two steps

The README opens this section by acknowledging that GitHub is a bit confusing if you want to download binary files like this repository provides. Clicking a .ko file in the tree view does not download it, it opens the information page for that file, and from there you use the Download/View raw link in the bottom square of the page, or the explicit download button to the right. If you prefer a command line tool, you need the raw URL, and the README is explicit that the raw in the URL is the part people forget:

bash
wget 'https://github.com/robertklep/dsm7-usb-serial-drivers/raw/main/modules/geminilake/dsm-7.1/cp210x.ko'

There is a direct link to an error message that will make sense later. The README has a section for the Unknown symbol in module error you get when loading the modules, and its advice is to follow the downloading instructions carefully. That is the tell that the most common failure is not a broken module but a file that was fetched as an HTML page instead of the binary, which is exactly what happens if you save the link instead of the raw link.

Installation is copy, chmod and one boot script

The installation steps require SSH access and administrator rights, and for the latter the README says to either use sudo for each command or use su to log in as root. The steps are three. The kernel modules for each supported platform can be found in modules/, and you copy the required files to your Synology and move them to /lib/modules. You copy the included usb-serial-drivers.sh file to /usr/local/etc/rc.d so that DSM 7 loads the modules at boot time. And you make sure that file has executable permissions, with chmod +x on /usr/local/etc/rc.d/usb-serial-drivers.sh. You do not need to reboot the NAS for the modules to load, you just execute the script after the previous steps:

bash
sudo /usr/local/etc/rc.d/usb-serial-drivers.sh start

If you would rather not use the script, the README notes that you must at least make sure you load usbserial.ko before any of the provided drivers, otherwise you will get errors. The order dependency is the same reason the download step warns you to be careful.

Getting the device into a container is a permissions problem

The second half of the README is the part that turns a working driver into a usable device, and it exists because many people run Home Assistant, Node-RED or Zigbee2MQTT in Docker on a Synology. First you confirm the device is recognised, and the command for that is:

bash
lsusb -cui

The output shows the device including its assignment, and the README's own example is a Conbee II showing cdc_acm with tty/ttyACM0. The numbers are not relevant, the assignment is, and the README notes it can also be ttyUSB0 and that the trailing digit can be a different number. Next the permissions, and the README says the easiest way is:

bash
sudo chmod 666 /dev/ttyACM0

It acknowledges that this is not ideal and that those permissions last only until the device is unplugged or the machine reboots, and that the alternatives are not ideal either. The more durable route is a Synology Task Scheduler entry that runs at boot and does the module load and the permissions in one go:

bash
insmod /lib/modules/cdc-acm.ko
chmod 666 /dev/ttyACM0

The container side is then a matter of passing the device through, and the README notes this cannot be done from the DSM container GUI, so you need to be comfortable with the Docker command line. With the regular docker command it is the --device argument:

bash
docker run --device /dev/ttyACM0 ...

With docker-compose, which the README recommends, it is a devices entry in the compose file:

yaml
devices:
  - "/dev/ttyACM0:/dev/ttyACM0"

The README closes the section with links to the documentation of Zigbee2MQTT, Node-RED and Home Assistant for the details of each project's own compose setup.

A file collection, and a history worth knowing about

The repository is unusual in what it is. The top level holds a .github directory, a .gitignore, the README and the modules directory plus the usb-serial-drivers.sh script, and the primary language is recorded as HTML because the documentation is the bulk of it. There is no source code to build, no test suite and no CI that compiles anything, which is why the README's Build environment section is where the documentation ends abruptly in the version available here. The provenance is worth knowing about, though, because it explains the range of hardware. A section titled Import from Jadahl.com, dated Oct 2022, records that the author retrieved all the modules that had been posted on that site, since the site had been offline for some time and did not look likely to come back, and added them to the repository. The modules for the current platforms are compiled by the maintainer against the DSM kernel versions, and the driver list has grown from that initial import. There are no GitHub releases, so the modules directory and the commits are the version record, and the last push was on 2026-10-18.

Editorial conclusion

dsm7-usb-serial-drivers suits a Synology owner whose USB serial adapter is not recognised by DSM 7, most often because they run Home Assistant, Node-RED or Zigbee2MQTT with a Zigbee stick and want the device passed into a container. It is the wrong tool for a generic Linux box, where the distribution ships these drivers already, and it is the wrong tool for a USB device that is not a serial adapter, because the repository says explicitly that it does not and will not provide drivers for other types of USB devices. Verify first which platform and DSM version your Synology runs, because the drivers are per platform and DSM 7.0 is covered for most platforms while 7.1 and 7.2 are still being added, and note that no licence identifier is recorded for the repository and the last push was on 2026-10-18.

Frequently asked questions

Which USB serial chipsets do the DSM 7 drivers in this repository support?

The README lists cp210x, ch341, pl2303 and ti_usb_3410_5052, noting that pl2303 and ti_usb_3410_5052 are not for all platforms. Some USB serial devices may already work natively through Synology's own cdc-acm driver at /lib/modules/cdc-acm.ko.

How do I find out which platform my Synology uses?

The README points at the Synology knowledge base page listing models and their Package Arch column, and gives the shell alternative grep platform_name /etc/synoinfo.conf. The kernel version can be found with uname -a from a terminal.

How do I install the drivers on a Synology NAS?

Over SSH with administrator rights, copy the needed .ko files to /lib/modules, copy usb-serial-drivers.sh to /usr/local/etc/rc.d, make it executable with chmod +x /usr/local/etc/rc.d/usb-serial-drivers.sh, and run sudo /usr/local/etc/rc.d/usb-serial-drivers.sh start. No reboot is needed.

How do I pass a USB serial device to a Docker container on Synology?

Confirm the device with lsusb -cui, set permissions with sudo chmod 666 /dev/ttyACM0, then use docker run --device /dev/ttyACM0 for the regular command, or add a devices entry to the compose file. The README notes this cannot be done from the DSM container GUI.

What causes the Unknown symbol in module error?

The README's advice is to follow the downloading instructions carefully. In practice this comes from fetching the .ko file from the GitHub page rather than the raw URL, so what lands on the NAS is an HTML page instead of the binary module.

Official sources

  1. Issues
  2. README
  3. robertklep/dsm7-usb-serial-drivers on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/robertklep-dsm7-usb-serial-drivers.svg)](https://hysenlabs.com/projects/robertklep-dsm7-usb-serial-drivers)

Was this useful?