b196a9f6ce
Setting up usb gadgets using g_* kernel modules are considered a legacy approach, but the usb_gadget configfs is a bit annoying to use directly. The usb_gadget configfs works by creating magic directories and writing to magic files under /sys/kernel/config/usbgadget. This new package is an init script to setup usb_gadget configfs using uci. In the config file, gadget/configuration/function sections create corresponding directories. UCI options are magic files available in the configfs and strings/0x409 directories, grabbed with a 'find' command. UDC option in gadget writes the UDC file under the 'gadget' directory to attach the generated gadget config. It's also possible to apply pre-made config templates under /usr/share/usbgadget. The templates use the same UCI config format, with the 'gadget' entry named 'g1'. Currently, there are templates for CDC-ACM and CDC-NCM gadgets written based on existing g_*.ko module code. Certain SBCs come with only a USB device port (e.g. Raspberry Pi Zero). With this script, it's now possible to perform initial setup on them by adding a default NCM gadget. Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
54 lines
1.3 KiB
Makefile
54 lines
1.3 KiB
Makefile
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=usbgadget
|
|
PKG_RELEASE:=1
|
|
|
|
PKG_LICENSE:=BSD-2-Clause
|
|
|
|
PKG_MAINTAINER:=Chuanhong Guo <gch981213@gmail.com>
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define Package/$(PKG_NAME)
|
|
SECTION:=utils
|
|
CATEGORY:=Utilities
|
|
DEPENDS:=@USB_GADGET_SUPPORT +kmod-usb-gadget +kmod-usb-lib-composite
|
|
TITLE:=init script to create USB gadgets
|
|
endef
|
|
|
|
define Build/Compile
|
|
endef
|
|
|
|
define Package/$(PKG_NAME)/install
|
|
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
|
|
$(INSTALL_CONF) ./files/usbgadget.conf $(1)/etc/config/usbgadget
|
|
$(INSTALL_BIN) ./files/usbgadget.init $(1)/etc/init.d/usbgadget
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,$(PKG_NAME)))
|
|
|
|
# 1: short name
|
|
# 2: description
|
|
# 3: dependencies on other packages
|
|
define GadgetPreset
|
|
define Package/$(PKG_NAME)-$(1)
|
|
SECTION:=utils
|
|
CATEGORY:=Utilities
|
|
TITLE+= $(2) gadget preset
|
|
DEPENDS+= $(3)
|
|
endef
|
|
|
|
define Package/$(PKG_NAME)-$(1)/description
|
|
This package contains the USB gadget preset for $(3).
|
|
endef
|
|
|
|
define Package/$(PKG_NAME)-$(1)/install
|
|
$(INSTALL_DIR) $$(1)/usr/share/usbgadget
|
|
$(INSTALL_CONF) ./files/presets/$(1) $$(1)/usr/share/usbgadget
|
|
endef
|
|
|
|
$$(eval $$(call BuildPackage,$(PKG_NAME)-$(1)))
|
|
endef
|
|
|
|
$(eval $(call GadgetPreset,ncm,CDC-NCM,+kmod-usb-gadget-ncm))
|
|
$(eval $(call GadgetPreset,acm,CDC-ACM,+kmod-usb-gadget-serial)) |