diff --git a/ME/so3 b/ME/so3 index a632a92f62..6cdf1208c2 160000 --- a/ME/so3 +++ b/ME/so3 @@ -1 +1 @@ -Subproject commit a632a92f6297d480e2b4c0391df7695d88594866 +Subproject commit 6cdf1208c2f8b5d39d3e9f7f6e8a2091661bc008 diff --git a/ME/soo/so3/so3/configs/emiso_64_defconfig b/ME/soo/so3/so3/configs/emiso_64_defconfig new file mode 100644 index 0000000000..6f5bff3b5e --- /dev/null +++ b/ME/soo/so3/so3/configs/emiso_64_defconfig @@ -0,0 +1,115 @@ +# +# Automatically generated make config: don't edit +# SO3 Polymorphic OS Configuration +# +# CONFIG_ARCH_ARM32 is not set +CONFIG_ARCH_ARM64=y +CONFIG_SO3VIRT=y +CONFIG_ARCH="arm64" +CONFIG_CROSS_COMPILE="aarch64-none-linux-gnu-" +# CONFIG_ARM_TRUSTZONE is not set +CONFIG_KERNEL_VADDR=0xffff800010000000 + +# +# Platform +# +CONFIG_VIRT64=y +# CONFIG_RPI4_64 is not set +# CONFIG_VA_BITS_39 is not set +CONFIG_VA_BITS_48=y +CONFIG_THREAD_ENV=y + +# +# Kernel & CPU features +# +# CONFIG_SMP is not set +CONFIG_NR_CPUS=1 +CONFIG_HZ=100 +CONFIG_SCHED_FLIP_SCHEDFREQ=30 + +# +# SO3 Scheduling configuration +# +CONFIG_SCHED_RR=y +# CONFIG_SCHED_PRIO is not set +CONFIG_SCHED_FREQ_PREEMPTION=y + +# +# Drivers +# +CONFIG_UART=y +CONFIG_IO_MAPPING_BASE=0xffff900000000000 +# CONFIG_I2C is not set +# CONFIG_NET is not set +# CONFIG_FB is not set +# CONFIG_INPUT is not set +# CONFIG_NS16550 is not set +# CONFIG_PL011_UART is not set +CONFIG_UART_LL_PADDR=0x09000000 +CONFIG_SOO_SERIAL=y +# CONFIG_MMC is not set +# CONFIG_RAMDEV is not set +# CONFIG_ARM_TIMER is not set +CONFIG_SOO_TIMER=y +# CONFIG_GIC is not set +CONFIG_SOO_IRQ=y +# CONFIG_PL111_CLCD is not set +# CONFIG_QEMU_RAMFB is not set +# CONFIG_SOO_FB is not set +# CONFIG_PL050_KMI is not set +# CONFIG_SOO_INPUT is not set + +# +# SO3 Applications +# +# CONFIG_APP_SAMPLE is not set + +# +# Filesystems +# +CONFIG_ROOTFS_NONE=y +# CONFIG_ROOTFS_MMC is not set +# CONFIG_ROOTFS_RAMDEV is not set + +# +# IPC +# +# CONFIG_IPC_SIGNAL is not set +# CONFIG_IPC_PIPE is not set +CONFIG_HEAP_SIZE=8 +# CONFIG_RTOS is not set +# CONFIG_AVZ is not set +CONFIG_SOO=y +CONFIG_MMU=y +# CONFIG_DEBUG_PRINTK is not set + +# +# SOO Mobile Entity - Smart Object Oriented subsystem +# +# CONFIG_SOO_REFSO3 is not set +# CONFIG_SOO_BLIND is not set +# CONFIG_SOO_OUTDOOR is not set +# CONFIG_SOO_AGENCY is not set +# CONFIG_SOO_NET is not set +# CONFIG_SOO_LEDCTRL is not set +# CONFIG_SOO_CHAT is not set +# CONFIG_SOO_WAGOLED is not set +# CONFIG_SOO_IUOC is not set +# CONFIG_SOO_SWITCH_KNX is not set +# CONFIG_SOO_SWITCH_ENOCEAN is not set +CONFIG_SOO_EMISO=y + +# +# SOO Mobile Entity frontend drivers +# +# CONFIG_VDUMMY_FRONTEND is not set +CONFIG_VUART_FRONTEND=y +# CONFIG_VDOGA12V6NM_FRONTEND is not set +# CONFIG_VWEATHER_FRONTEND is not set +# CONFIG_VUIHANDLER_FRONTEND is not set +# CONFIG_VSENSELED_FRONTEND is not set +# CONFIG_VSENSEJ_FRONTEND is not set +# CONFIG_VENOCEAN_FRONTEND is not set +# CONFIG_VWAGOLED_FRONTEND is not set +# CONFIG_VIUOC_FRONTEND is not set +# CONFIG_VKNX_FRONTEND is not set diff --git a/ME/soo/so3/so3/dts/Makefile b/ME/soo/so3/so3/dts/Makefile index 192f9e6825..f13cdf4761 100644 --- a/ME/soo/so3/so3/dts/Makefile +++ b/ME/soo/so3/so3/dts/Makefile @@ -25,6 +25,7 @@ dtb-$(CONFIG_SOO_WAGOLED) += wagoled.dtb dtb-$(CONFIG_SOO_SWITCH_KNX) += switch_knx.dtb dtb-$(CONFIG_SOO_SWITCH_ENOCEAN) += switch_enocean.dtb dtb-$(CONFIG_SOO_IUOC) += iuoc.dtb +dtb-$(CONFIG_SOO_EMISO) += emiso.dtb endif endif diff --git a/ME/soo/so3/so3/dts/emiso.dts b/ME/soo/so3/so3/dts/emiso.dts new file mode 100644 index 0000000000..06e100cd88 --- /dev/null +++ b/ME/soo/so3/so3/dts/emiso.dts @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2016-2023 Daniel Rossier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/dts-v1/; + +#include "soo.dtsi" + +&ME { + /* 16 MB should be enough for major cases. */ + domain-size = <0x1000000>; + + /* SPID on 64-bit encoding */ + spid = /bits/ 64 <0x0010000000000001>; + + /* SPAD capabilities on 64-bit encoding */ + spadcaps = /bits/ 64 <0x0000000000000000>; + + /* Name of this ME */ + me_name = "SOO.refso3"; + + /* Short description */ + me_shortdesc = + +"This is the standard reference ME that can be used as template or simply to \ +perform various tests. This variant has no rootfs (only kernel threads)."; + + frontends { + + /* Enabling the console */ + vuart { + status = "ok"; + }; + }; +}; + diff --git a/ME/soo/so3/so3/soo/me/Kconfig b/ME/soo/so3/so3/soo/me/Kconfig index cab71171e4..f8be4c9182 100644 --- a/ME/soo/so3/so3/soo/me/Kconfig +++ b/ME/soo/so3/so3/soo/me/Kconfig @@ -68,4 +68,12 @@ choice config SOO_SWITCH_ENOCEAN bool "SOO.switch Mobile Entity using enocean" + config SOO_EMISO + bool "SOO.emiso Mobile Entity" + help + SOO.emiso ME simply logs messages each second. + It is a simple example of SO3 container and can be used with + Portainer server + + endchoice diff --git a/ME/soo/so3/so3/soo/me/Makefile b/ME/soo/so3/so3/soo/me/Makefile index e00293de27..067b3edb5c 100644 --- a/ME/soo/so3/so3/soo/me/Makefile +++ b/ME/soo/so3/so3/soo/me/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_SOO_WAGOLED) += wagoled/ obj-$(CONFIG_SOO_IUOC) += iuoc/ obj-$(CONFIG_SOO_SWITCH_ENOCEAN) += switch/ obj-$(CONFIG_SOO_SWITCH_KNX) += switch/ +obj-$(CONFIG_SOO_EMISO) += emiso/ diff --git a/ME/soo/so3/so3/soo/me/emiso/Makefile b/ME/soo/so3/so3/soo/me/emiso/Makefile new file mode 100644 index 0000000000..34a3accd97 --- /dev/null +++ b/ME/soo/so3/so3/soo/me/emiso/Makefile @@ -0,0 +1,3 @@ + +obj-y += emiso.o callbacks.o + diff --git a/ME/soo/so3/so3/soo/me/emiso/callbacks.c b/ME/soo/so3/so3/soo/me/emiso/callbacks.c new file mode 100644 index 0000000000..26043564b9 --- /dev/null +++ b/ME/soo/so3/so3/soo/me/emiso/callbacks.c @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2014-2023 Daniel Rossier + * Copyright (C) March 2018 Baptiste Delporte + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#if 0 +#define DEBUG +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include + +static LIST_HEAD(visits); +static LIST_HEAD(known_soo_list); + +/* Reference to the shared content helpful during synergy with other MEs */ +sh_refso3_t *sh_refso3; + +/** + * PRE-ACTIVATE + * + * Should receive local information through args + */ +void cb_pre_activate(soo_domcall_arg_t *args) { + + DBG(">> ME %d: cb_pre_activate...\n", ME_domID()); + +#if 0 /* To be implemented... */ + logmsg("[soo:me:SOO.refSO3] ME %d: cb_pre_activate..\n", ME_domID()); +#endif + +} + +/** + * PRE-PROPAGATE + * + * The callback is executed in first stage to give a chance to a resident ME to stay or disappear, for example. + */ +void cb_pre_propagate(soo_domcall_arg_t *args) { + + pre_propagate_args_t *pre_propagate_args = (pre_propagate_args_t *) &args->u.pre_propagate_args; + + DBG(">> ME %d: cb_pre_propagate...\n", ME_domID()); + + pre_propagate_args->propagate_status = PROPAGATE_STATUS_YES; +} + +/** + * Kill domcall - if another ME tries to kill us. + */ +void cb_kill_me(soo_domcall_arg_t *args) { + + DBG(">> ME %d: cb_kill_me...\n", ME_domID()); + + /* Do we accept to be killed? yes... */ + set_ME_state(ME_state_killed); +} + +/** + * PRE_SUSPEND + * + * This callback is executed right before suspending the state of frontend drivers, before migrating + * + */ +void cb_pre_suspend(soo_domcall_arg_t *args) { + DBG(">> ME %d: cb_pre_suspend...\n", ME_domID()); +} + +/** + * COOPERATE + * + * This callback is executed when an arriving ME (initiator) decides to cooperate with a residing ME (target). + */ +void cb_cooperate(soo_domcall_arg_t *args) { + cooperate_args_t *cooperate_args = (cooperate_args_t *) &args->u.cooperate_args; + agency_ctl_args_t agency_ctl_args; + + lprintk("[soo:me:SOO.refSO3] ME %d: cb_cooperate...\n", ME_domID()); + + switch (cooperate_args->role) { + case COOPERATE_INITIATOR: + + if (cooperate_args->alone) + return ; + + /* Collaboration ... */ + + /* Update the list of hosts */ + sh_refso3->me_common.soohost_nr = concat_hosts(&visits, (uint8_t *) sh_refso3->me_common.soohosts); + + agency_ctl_args.u.cooperate_args.pfn = phys_to_pfn(virt_to_phys_pt((addr_t) sh_refso3)); + agency_ctl_args.u.cooperate_args.slotID = ME_domID(); /* Will be copied in initiator_cooperate_args */ + + /* This pattern enables the cooperation with the target ME */ + + agency_ctl_args.cmd = AG_COOPERATE; + agency_ctl_args.slotID = cooperate_args->u.target_coop.slotID; + + /* Perform the cooperate in the target ME */ + args->__agency_ctl(&agency_ctl_args); +#if 0 + set_ME_state(ME_state_killed); +#endif + break; + + case COOPERATE_TARGET: + DBG("Cooperate: Target %d\n", ME_domID()); +#if 1 + /* Destroy us */ + set_ME_state(ME_state_terminated); +#endif + + break; + + default: + lprintk("Cooperate: Bad role %d\n", cooperate_args->role); + BUG(); + } + +} + +/** + * PRE_RESUME + * + * This callback is executed right before resuming the frontend drivers, right after ME activation + * + * Returns 0 if no propagation to the user space is required, 1 otherwise + */ +void cb_pre_resume(soo_domcall_arg_t *args) { + DBG(">> ME %d: cb_pre_resume...\n", ME_domID()); +} + +/** + * POST_ACTIVATE callback (async) + */ +void cb_post_activate(soo_domcall_arg_t *args) { +#if 0 + agency_ctl_args_t agency_ctl_args; + static uint32_t count = 0; +#endif + + DBG(">> ME %d: cb_post_activate...\n", ME_domID()); +} + +/** + * FORCE_TERMINATE callback (async) + * + * Returns 0 if no propagation to the user space is required, 1 otherwise + * + */ + +void cb_force_terminate(void) { + DBG(">> ME %d: cb_force_terminate...\n", ME_domID()); + DBG("ME state: %d\n", get_ME_state()); + + /* We do nothing particular here for this ME, + * however we proceed with the normal termination of execution. + */ + + set_ME_state(ME_state_terminated); +} + +void callbacks_init(void) { + + /* Allocate the shared page. */ + sh_refso3 = (sh_refso3_t *) get_contig_free_vpages(1); + + /* Initialize the shared content page used to exchange information between other MEs */ + memset(sh_refso3, 0, PAGE_SIZE); + + /* Set the SPAD capabilities (currently not used) */ + memset(&get_ME_desc()->spad, 0, sizeof(spad_t)); + +} + + diff --git a/ME/soo/so3/so3/soo/me/emiso/emiso.c b/ME/soo/so3/so3/soo/me/emiso/emiso.c new file mode 100644 index 0000000000..4107d2f86a --- /dev/null +++ b/ME/soo/so3/so3/soo/me/emiso/emiso.c @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2016-2020 Daniel Rossier + * Copyright (C) 2016-2019 Baptiste Delporte + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#if 0 +#define DEBUG +#endif + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * This ME does nothing particular. It is aimed at giving a template to develop + * a new ME. + * + * Please, have a look at the SOO.ledctrl which is an example of ME intended to + * pilot LEDs on the Sense HAT extension. + * + * Note that SOO.refso3 can be configured with a rootfs (ramfs) which contains + * small applications like a shell and the LVGL demo application. + * + */ +void *app_thread_main(void *args) { + + static int idx = 0; + + /* The ME can cooperate with the others. */ + spad_enable_cooperate(); + + while (1) { + + msleep(1000); + logs("message#%d\n", idx++); + } + + return NULL; +} diff --git a/ME/soo/so3/target/emiso_64.its b/ME/soo/so3/target/emiso_64.its new file mode 100644 index 0000000000..076ccb2d22 --- /dev/null +++ b/ME/soo/so3/target/emiso_64.its @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2018-2019 Daniel Rossier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/dts-v1/; + +/ { + description = "SO3 image for the SOO.refso3 ME (without rootfs)"; + + images { + + so3 { + description = "SO3 OS kernel"; + data = /incbin/("../so3/so3.bin"); + type = "ME"; + arch = "arm64"; + os = "linux"; + compression = "none"; + }; + + fdt { + description = "Flattened Device Tree blob"; + data = /incbin/("../so3/dts/emiso.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + }; + }; +}; diff --git a/ME/work/so3/u-boot/include/ctype.h b/ME/work/so3/u-boot/include/ctype.h new file mode 120000 index 0000000000..9e43f9c6c6 --- /dev/null +++ b/ME/work/so3/u-boot/include/ctype.h @@ -0,0 +1 @@ +linux/ctype.h \ No newline at end of file diff --git a/doc/source/docker/docker.rst b/doc/source/docker/docker.rst index f471410cd1..f27a8c2c35 100644 --- a/doc/source/docker/docker.rst +++ b/doc/source/docker/docker.rst @@ -4,7 +4,12 @@ Docker ###### -The *Docker* engine has to be integrated in the ``EMISO`` environment. +This chapter provides some information on how to integrate and to use the *Docker* +engine in the ``SOO`` environment. + +.. note:: + + The *Docker* engine is not integrated in the ``SOO`` environment. *********** Integration @@ -17,7 +22,7 @@ kernel modules required to enable Docker support. * Usage: ``check-config.sh `` -It is located in ``/docker/`` folder. +It is located in ``/docker/`` folder. **rootfs** @@ -44,17 +49,17 @@ Image integration The image should be placed in one of the following directories: -* /agency/usr/docker_images/{aarch32, aarch64} +* /agency/usr/docker_images/{aarch32, aarch64} The following commands shows how to retrieve a *docker* image and place it at the -correct place in `emiso` repo +correct place in `SOO` repo .. code-block:: shell $ docker pull $ docker save -o .docker $ zip .zip .docker - $ mv .zip /agency/usr/docker_images/{aarch32, aarch64} + $ mv .zip /agency/usr/docker_images/{aarch32, aarch64} .. warning:: diff --git a/doc/source/emiso_engine/emiso_engine.rst b/doc/source/emiso_engine/emiso_engine.rst index a63f6fe51b..65123cb745 100644 --- a/doc/source/emiso_engine/emiso_engine.rst +++ b/doc/source/emiso_engine/emiso_engine.rst @@ -4,13 +4,10 @@ EMISO Engine ############ -.. note:: - - Work in progress - the current version only contains basic info. - -The EMISO Engine replaces the docker engine in the EMISO environment. It acts as -a gateway between *Portainer* agent and *SO3 containers*. The following picture -presents the communication flow between the *Portainer* Server and *SO3 Containers*. +The EMISO Engine replaces the docker engine in the `EMISO` environment. It supports +a subset of the Docker APIs set. +The following picture presents the communication flow between the *Portainer* Server +and *SO3 Containers*. .. figure:: pictures/EMISO-message_flow.png :name: _fig-Communication flow @@ -38,6 +35,15 @@ Where * (optional) ``-i``: Interactive mode - start the cli interface instead of the webserver. +.. note:: + + The `interactive` (``cli``) mode is not implemented yet + +.. note:: + + Due to some `limitation `_ + with `Portainer` Server, the Secure mode is not supported + ******* Service ******* @@ -63,16 +69,9 @@ Usage: Architecture ************ -The following picture shows the architecture of the EMISO engine. It is constituted +The following picture depicts the architecture of the EMISO engine. It is constituted by: -* A Web Server which receives requests from the Docker API. It is a Restful HTTP - server. -* EMISO Daemon - it handles the interaction with the SO3 Containers -* Cli interface. It offers an entry point to interact with the EMISO Daemon. It is - used to interact with the SO3 Containers from the user-space mainly for debug - purposes. - .. figure:: pictures/EMISI-engine_architecture.png :name: _fig-engine_architecture :alt: Engine Architecture @@ -112,22 +111,6 @@ are not handled by the SO3 containers. Container SO3 “injected” container ============== ============================= -The following table provides the mapping between the Docker and SO3 states. - - ============== ============================= - Docker SO3 container - ============== ============================= - created ME_state_booting - created ME_state_preparing - running ME_state_living - paused ME_state_suspended - error ME_state_migrating - paused ME_state_dormant - dead ME_state_killed - exited ME_state_terminated - dead ME_state_dead - ============== ============================= - The EMISO Engine daemon provides supports the following features: * Retrieving status/info about the SO3 Images/Containers @@ -143,6 +126,75 @@ SO3 Images An SO3 Container image consists in a SO3 “itb” file. These images are stored in ``/mnt/ME/`` SD card partition. +SO3 Container - Creation +======================== + +The creation of an SO3 container consists in a SO3 injection. At the end of the +injection process, the container state is “booting”. + +SO3 Container - Start +===================== + +Starting a SO3 container is similar to the Migration finalization process in SOO +framework. + +It is expected that the SO3 container state is “booting” before starting it. The +final state is “living”. + +SO3 Container - Stop +==================== + +In Docker, the container stop command consists in sending the ``SIGTERM``, and +after a grace period, ``SIGKILL``. It is a “gentle” container kill procedure. Once +a container has been stopped, it is possible to restart the container by calling +the “start” command. + +To provide the same behaviors, the SO3 container stop command performs the following +tasks: + +* Force terminate the ME +* Re-Inject the ME + +The Container is then ready to be started! + +SO3 Container – Pause / Unpause +=============================== + +The SO3 container pause / unpause consists in a ME migration ``init`` and finalization +commands respectively. + +SO3 Container - Logs +==================== + +SO3 Containers have to provide a method to retrieve their logs through Docker APIs. +This improvement involves enhancing the VUART backend driver. When a print is made +from a SO3 Container, the message is sent to the Linux kernel via the VUART +backend/frontend drives. Then, the backend driver prints these messages by directly interfacing with the UART driver. + +In this update, the logged messages are now also stored in dedicated log files. +Each container has its own file. The file path for these logs is as follows: + +* File path: ``/var/log/soo/me_.log`` + +The following image shows an overview of this log's mechanism. + +.. figure:: pictures/emiso_engine_logs_flow.png + :name: _fig-emiso_engine_logs_flow + :alt: EMISO engine logs flow + :align: center + + EMISO engine logs flow + +The behaviors is implemented this way: +* **SO3 Container**: The ``logs`` function has been added to SO3 containers. This +function adds ``[ME:]`` prefix to the messages. +* **linux**: syslog-ng has been configured to store the messages with this prefix +in the logs files. + +.. note:: + + All the ``me_.log`` files are deleted at boot time + ************* cli interface ************* @@ -150,12 +202,3 @@ cli interface .. note:: The cli interface is not implemented in current ``emiso-engine`` version - -The cli interface supports the following commands: - - ===================== ========================================== - Cmd Name Description - ===================== ========================================== - image info Return information on the available images - image rm Remove - ===================== ========================================== diff --git a/doc/source/index.rst b/doc/source/index.rst index a0b4c92683..301ae39cd4 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -22,7 +22,8 @@ drivers/drivers rootfs/rootfs user_guide - emiso_engine/emiso_engine.rst + docker/docker + emiso_engine/emiso_engine portainer/portainer logging board_issues diff --git a/doc/source/portainer/portainer.rst b/doc/source/portainer/portainer.rst index 484a658b9e..7c41384564 100644 --- a/doc/source/portainer/portainer.rst +++ b/doc/source/portainer/portainer.rst @@ -10,66 +10,103 @@ and containerized applications. It provides a user-friendly web-based interface that allows users to interact with Docker and manage containers, images, networks, and volumes without needing to use complex command-line tools. -In the context of the EMISO project, *Portainer* will be employed and customized -to extend its functionality in order to effectively support SO3 Containers. +In the SOO framework, `Portainer Server CE` is used as the Container Orchestration +Use User Interface (COUI). -*Portainer* consists of two parts: a Server and an Agent. Both run as lightweight -containers. The *Portainer* Agent runs on the node in your cluster and communicates -with the *Portainer* Server. +************ +Installation +************ -****** -Server -****** +Portainer Server runs as lightweight Docker containers on a Docker engine. It means +docker must be installed on the Host PC. -The *Portainer Server* can be started directly from a docker image. +* Creation of a volume that Portainer Server use to store it database: .. code-block:: shell - $ docker volume create portainer_data - $ docker run -d -p 8000:8000 -p 9443:9443 \ + docker volume create portainer_data + +* Download and install Portainer Server container: + +.. code-block:: shell + + $ docker run -d -p 8000:8000 -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest +``docker ps`` command can be used to check if the Portainer server is running -***** -Agent -***** - -The Agent is also deployed from a docker image, below is the docker run command -to start it. +To log-in, open a web browser and to to: .. code-block:: shell - $ docker run -d \ - -p 9001:9001 \ - --name portainer_agent \ - --restart=always \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v /var/lib/docker/volumes:/var/lib/docker/volumes \ - portainer/agent:2.18.4 + https://localhost:9443 + +************* +Initial setup +************* + +Once the Portainer Server has been deployed, and you have navigated to the instance's +URL, you are ready for the initial setup. + +First time connected to the Portainer server; the first user has to be created. +This first user will be an administrator. The username defaults to admin and the +password must be at least 12 characters long. + +Once the admin user has been created, the Environment Wizard will automatically +launch. The wizard will help get you started with Portainer. -During the initial boot of the system, the process consists of extracting the *Portainer-agent* -image, loading it into Docker, and subsequently executing it using the docker run -command. -After this initial setup, the *Portainer-agent* container is configured to be launched -automatically at every system boot. +The installation process automatically detects your local environment and sets it +up for you. If you want to add additional environments to manage with this Portainer +instance, click Add Environments. Otherwise, click Get Started to start using +Portainer! -All these steps are handled by ``S62Portainer`` ``init.d`` script. +********************* +Create an environment +********************* -The docker image is stored, in the target, at ``/root/docker_images/portainer_agent_image.zip`` +In short, an environment in Portainer represents a SOO mobile entity. -.. note:: +* Select "environment" +* Click "+ Add environment" +* Select "Docker Standalone" --> click "Start Wizard" + * Select "API" + * Provide a name to the environment + * Set the API + port (default port is 2375) + * no TLS - The container starts automatically at boot. If it is manually stopped, it is - restarted only when Docker daemon restarts or the container itself is manually - restarted. +********************** +Create a SO3 container +********************** +* Select the environment on which to create the container +* Select "Containers" --> click "+ Add container" + * Give a name at the container + * Provide the image name in image field (``/mnt/ME/.itb)`` + * Click on "Advanced mode" to select the "Simple mode" + * Disable "Always pull the image" button + * Click on "Deploy the container" -*********** -Basic usage -*********** -TBD +*************** +EMISO Container +*************** + +A simple container, called ``emiso_64`` has been created. It can be used as an +example of of SO3 container. It simply prints a message/log each second. + +* Compilation: + +.. code-block:: shell + + $ cd /ME + $ ./build.sh -k SOO.emiso_64 + +* Deployment: + +.. code-block:: shell + + ./deploy.sh -m SOO.emiso_64 diff --git a/linux/linux/soo/drivers/vuartback/vuart.c b/linux/linux/soo/drivers/vuartback/vuart.c index 8ffc7fa1ad..bcf6fec2be 100644 --- a/linux/linux/soo/drivers/vuartback/vuart.c +++ b/linux/linux/soo/drivers/vuartback/vuart.c @@ -126,8 +126,9 @@ void process_response(struct vbus_device *vdev) { notify_remote_via_virq(vuart_priv->vuart.irq); - } else - lprintch(ring_req->c); + } else { + printk(KERN_CONT "%c", ring_req->c); + } } vdevback_processing_end(vdev); diff --git a/linux/rootfs/board/common/rootfs_overlay/etc/soo/remove_logs.sh b/linux/rootfs/board/common/rootfs_overlay/etc/soo/remove_logs.sh new file mode 100755 index 0000000000..6b77fefe35 --- /dev/null +++ b/linux/rootfs/board/common/rootfs_overlay/etc/soo/remove_logs.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Remove SOO log files +rm -f /var/log/soo/* diff --git a/linux/rootfs/board/common/rootfs_overlay/etc/syslog-ng.conf b/linux/rootfs/board/common/rootfs_overlay/etc/syslog-ng.conf index f74035b2ff..93e6a4331b 100644 --- a/linux/rootfs/board/common/rootfs_overlay/etc/syslog-ng.conf +++ b/linux/rootfs/board/common/rootfs_overlay/etc/syslog-ng.conf @@ -1,4 +1,4 @@ -@version: 3.24 +@version: 3.34 # syslog configuration for a smart object (SOO) @@ -19,68 +19,26 @@ options { log_msg_size(18192); }; -source s_sys { +source s_kernel { file("/proc/kmsg" program_override("kernel")); - unix-stream ("/dev/log"); - internal(); }; -source s_uspace { - pipe ("/dev/pipe_uspace_logs"); -}; - -destination d_all { - file("/var/log/messages"); -}; - -# Provide logs from the soolink subsystem -destination d_soolink { - file("/var/log/soo/soolink"); -}; -# Logging of agency (usr) messages -destination d_agency { - file("/var/log/soo/agency"); +# Define a custom parser +parser p_me { + regexp-parser( + prefix("parsed_") + patterns('\[ME:(?\d+)\].*$') + ); }; -# Logging of MEs +# Logging of MEs destination d_me { - file("/var/log/soo/me"); -}; - -filter f_all { - not match("\\[soo" value("MESSAGE")); -}; - -filter f_soolink { - match("\\[soo:soolink" value("MESSAGE")); -}; - -filter f_me { - match("\\[soo:me" value("MESSAGE")); -}; - - -#log { -# source(s_sys); -# filter(f_all); -# destination(d_all); -#}; - -log { - source(s_sys); - filter(f_soolink); - destination(d_soolink); + file("/var/log/soo/me_${parsed_id}.log"); }; log { - source(s_sys); - filter(f_me); + source(s_kernel); + parser(p_me); destination(d_me); }; - -log { - source(s_uspace); - destination(d_agency); -}; - diff --git a/linux/rootfs/board/common/rootfs_overlay/usr/lib/systemd/system/remove_logs.service b/linux/rootfs/board/common/rootfs_overlay/usr/lib/systemd/system/remove_logs.service new file mode 100644 index 0000000000..806602ccc8 --- /dev/null +++ b/linux/rootfs/board/common/rootfs_overlay/usr/lib/systemd/system/remove_logs.service @@ -0,0 +1,10 @@ +[Unit] +Description=Clean SOO Logs + +[Service] +Type=oneshot +ExecStart=/etc/soo/remove_logs.sh + +[Install] +WantedBy=multi-user.target +Enabled=true diff --git a/linux/rootfs/board/rpi4_64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service b/linux/rootfs/board/rpi4_64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service index 78022b590f..5926154b3f 100644 --- a/linux/rootfs/board/rpi4_64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service +++ b/linux/rootfs/board/rpi4_64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service @@ -1,12 +1,13 @@ [Unit] Description=System Logging Service -Requires=syslog.socket [Service] -ExecStart=/usr/sbin/syslog-ng -n -StandardOutput=null +ExecStart=/usr/sbin/syslog-ng -F +StandardOutput=journal +StandardError=journal +Restart=on-failure [Install] Alias=syslog.service WantedBy=multi-user.target - +Enabled=true diff --git a/linux/rootfs/board/usr/lib/crda/pubkeys/benh@debian.org.key.pub.pem b/linux/rootfs/board/usr/lib/crda/pubkeys/benh@debian.org.key.pub.pem deleted file mode 100644 index 2bba176788..0000000000 --- a/linux/rootfs/board/usr/lib/crda/pubkeys/benh@debian.org.key.pub.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAneF3oCSg1XllOgeQyfal -ph+EHCMHS0+lA8YP91TVi355gQDS6T30l/6EzVW9yY8hV4gGOZBmQSZ5LMo/lYcB -ES8vsOELQ/xfL09nBNtNt3JN0cV2c02RabBxFzbqqwo6zZWbdhuOIRePxQK/JMfA -QLE7xIB8caVR3Pc6WH+xB4GKENH2kxdx4PpReRXU14+tvW844SZ9vPA+gIm07I5p -kNuXivAjI4OCO2qxrOvnmXQqNY6pZP1GnujlSGExbub8GRhUwxtP1gBEhxw3Rer1 -ycsPDFXsz2rCRSYjojFSTe4hff1YcsIoxY6p0O4Bdwil8CIrR3krz5pGtY/9ZKK1 -7QIDAQAB ------END PUBLIC KEY----- diff --git a/linux/rootfs/board/usr/lib/crda/pubkeys/linville.key.pub.pem b/linux/rootfs/board/usr/lib/crda/pubkeys/linville.key.pub.pem deleted file mode 100644 index 3a2e8d0454..0000000000 --- a/linux/rootfs/board/usr/lib/crda/pubkeys/linville.key.pub.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1leZcYjTXc4qLq1oN2Ak -8vLP85P5cFTrCpqdSI5W4VOwdaJB4TtaxU2fATcH/A2EsE3h1rOfzI0+fBV9DcOO -qyID+zdILBMb8xK5Zv+78OkBGls/WzvDDVhdmn1TRHvRvmJy7cX1mCT56cnHrZM/ -ZBaFwVfiD9TcqqisyF1sqE5+cMHTWRbxc1+rtojr0eGYrNfK20awlD5KVj6Ejzot -r9EDWAsL1bH/kGfMdnputcyMapLQpRVruO/jEdjSmhAE/sj1tmHcAXBT6j5al4Oa -LiBaWnP++rune7rjimwfzp0549/rupQUM7nAZRDLyzXj3J/KEci6dXtjonBUFqDY -4QIDAQAB ------END PUBLIC KEY----- diff --git a/linux/rootfs/board/usr/lib/crda/pubkeys/sforshee.key.pub.pem b/linux/rootfs/board/usr/lib/crda/pubkeys/sforshee.key.pub.pem deleted file mode 100644 index 73d580e8eb..0000000000 --- a/linux/rootfs/board/usr/lib/crda/pubkeys/sforshee.key.pub.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtUDjnCiEOQPyOddmLEE4 -Fax+pYNxJX6QfGjdbz/Z11k4n3xqUsIDKi1+ZvQesxJwIFvUlzI9cYs7GwgXFGth -xFeLlhYc/STVCwn5aBGE+8pRDNFFGdoQRIrZ/nap/WAtGAsolbIt6oiYuNFWIfBT -H/ECb+lGm5NfKJAPrDb6aCNxV1b2zNPffSrZG3NF67onhe96f6XLgMcwNtJT7uys -Hucx8TainGPGZVt/JXVooerTfgBcml7YIBgydwcpEmYeNnPnlwRBN7Gxciv0oSkg -fJZ5CyvQ2N7IbD+T+8XueFIRFRt69uJomef7RhaE48eh5uDSRtXhxF+gZvTaxP+V -HQIDAQAB ------END PUBLIC KEY----- diff --git a/linux/rootfs/board/usr/lib/crda/regulatory.bin b/linux/rootfs/board/usr/lib/crda/regulatory.bin deleted file mode 100644 index 19b18e82a3..0000000000 Binary files a/linux/rootfs/board/usr/lib/crda/regulatory.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/crda/setregdomain b/linux/rootfs/board/usr/lib/crda/setregdomain deleted file mode 100755 index 532da5e9c4..0000000000 --- a/linux/rootfs/board/usr/lib/crda/setregdomain +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -set -e - -REGDOMAIN= -CRDA_CONF=/etc/default/crda - -[ -r "$CRDA_CONF" ] && . "$CRDA_CONF" -[ -z "$REGDOMAIN" ] && exit 0 - -exec /sbin/iw reg set "$REGDOMAIN" diff --git a/linux/rootfs/board/usr/lib/firmware/BCM2033-FW.bin b/linux/rootfs/board/usr/lib/firmware/BCM2033-FW.bin deleted file mode 100644 index 61fb32f304..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/BCM2033-FW.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/BCM2033-MD.hex b/linux/rootfs/board/usr/lib/firmware/BCM2033-MD.hex deleted file mode 100644 index 763d38379a..0000000000 --- a/linux/rootfs/board/usr/lib/firmware/BCM2033-MD.hex +++ /dev/null @@ -1,87 +0,0 @@ -:1076ED008F14D3E514648094894008E5142437FF82 -:0C76FD0002776AE5142430FF12776A223D -:0276B3008F1234 -:1076B500E5127804A2E713D8FB540FF513FF1276F1 -:0B76C500EDE512540FF513FF0276ED07 -:05780C007F5B02776ABA -:057811007F5D02776AB3 -:10758B0012780CE4F511E51190780693FF12776AE7 -:10759B000511E511C3940640ED7F021276ED7F5F76 -:1075AB0012776A7F041276ED7F5F12776A7F011282 -:1075BB0076ED907C00E0FF1276B3907C01E0FF1239 -:0575CB0076B302781107 -:0777F800907DC67401F02230 -:03781B00027400F4 -:107537001277F8C20112768DD290C296C2001277E6 -:10754700C38F10E51024DA601F24A86032245B7013 -:10755700EDAF1012776AC29012781B900001E0FE1F -:10756700A3E0FF1277FF80D6AF1012776AD2B4126A -:10757700781B900001E0FEA3E0FF1277FF80BF12A7 -:04758700758B80BAC6 -:0B77CF005390F3EF25E025E0429022EC -:10740000E4F511F512F513AF131277CFD201E5139E -:10741000640370030274E030021D127635400512D9 -:10742000778A80F6AE11AF12AD07AC06AB1A7F0AB1 -:107430007E7F1276D0801612772250FBAE11AF12EB -:10744000AD07AC06AB1A7F077E7F1276D0E51A2512 -:1074500012F512E43511F511E4F51AE5131460077D -:10746000146066240270A7E5127004E5116474705C -:1074700040E5127004E511648060933002151276C5 -:1074800035400512778A80F6AD1A7F0A7E7F127624 -:10749000E5800E12772250FBAD1A7F077E7F1276B1 -:1074A000E5E51A2512F512E43511F511E4F51A8017 -:1074B000C0E5124511600302740E751180F51205C6 -:1074C00013AF131277CF02740EE5127004E5116446 -:1074D000C0600302740E7F2E12776A051302740EC9 -:0174E0002289 -:05781600427BFE00F3BF -:0A77E500907F04EFF0A3F0A3F02260 -:10768D00C202E4F51A1277101277F87F011277E52E -:10769D001277B55003D202227F021277E512779945 -:0676AD0050E61274E12218 -:0F777B00907F00EFF0A3EDF0A37401F0E4F02293 -:1074E1007DC17F0712777B12775950FBE4F51112AA -:1074F10077590511E511C3942040F4907BFEE0FD1E -:10750100E4FF12777B907BFFE0FD0F12777BE4FDB8 -:107511007F0412777B7D287F0612777B7DE30F1234 -:10752100777B7D407F0B12777B7D607F0D12777BB0 -:067531007D201F02777BA4 -:10774800907F00EFF0907F027402F0907F01E0FFDD -:01775800220E -:0E7799007F0A127748EF20E003D38001C3225D -:0977EF0012779950031277F82279 -:107722001277EF907F247404F0E030E205751A407E -:04773200D322C32279 -:107759001277EF7F09127748EF30E203D38001C334 -:0177690022FD -:0E77A7008F1512775950FB907F07E515F022E1 -:107603001277EFE51A70271277225008751A401582 -:107613001AD32222907F24E0FFEF5408FFEFF0906B -:107623007F24E0FFEF30E303C32222D32222151A83 -:02763300D32260 -:0B77DA0012760350FB907F07E0FF22B7 -:0E77B500907F22E0FFEF30E703D38001C32274 -:0F778A00907F227480F01277B550031277F822A7 -:10763500E51A7028907F23E0FFEF30E11C907F234F -:10764500E0FFEF5402FFEFF0907F0FE0FF8F1AE5A8 -:0E7655001A7003C32222D32222C32222D32280 -:1075D0008F18907F20E0FFEF30E40B907F20741035 -:1075E000F012778A80EC907F09E518F0907F0DE02B -:1075F000FFEF4402FFEFF0907F0DE0FFEF54FDFF3F -:03760000EFF02286 -:10773600127635400512778A80F6151A907F0AE090 -:02774600FF2220 -:0C77C30030020512773622221277DA22FB -:10776A008F19200206AF191277A722AF191275D006 -:01777A0022EC -:0300000002766322 -:10766300D2900000758120907816127689F81276F0 -:1076730089F9127689FA127689FB88838982EAF07E -:0A768300A3EBF0027537E4A3932295 -:10770900F0A308B805FA22E4F8907F20141277094B -:09771900E4907F25F812770922A3 -:0777FF00E48F828E837322E8 -:1076D0008E838F828C858D84758600E00586F0A36D -:0D76E0000586DBF7228E838F82E0DDFD2220 -:067806004242544D445FB4 -:00000001FF diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/BCM4345C0.hcd b/linux/rootfs/board/usr/lib/firmware/brcm/BCM4345C0.hcd deleted file mode 100644 index 4eab4c9655..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/BCM4345C0.hcd and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/bcm43xx-0.fw b/linux/rootfs/board/usr/lib/firmware/brcm/bcm43xx-0.fw deleted file mode 100644 index 9ee5ccc10a..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/bcm43xx-0.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/bcm43xx_hdr-0.fw b/linux/rootfs/board/usr/lib/firmware/brcm/bcm43xx_hdr-0.fw deleted file mode 100644 index a6db78de06..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/bcm43xx_hdr-0.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43143-sdio.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43143-sdio.bin deleted file mode 100644 index e4f56f3d1a..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43143-sdio.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43143.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43143.bin deleted file mode 100644 index 28b8db998e..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43143.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43236b.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43236b.bin deleted file mode 100644 index 8a2004a916..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43236b.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43242a.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43242a.bin deleted file mode 100644 index 80604d853b..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43242a.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac4329-sdio.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac4329-sdio.bin deleted file mode 100644 index d4c4560cdd..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac4329-sdio.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.bin deleted file mode 100644 index 94f2add702..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob deleted file mode 100644 index 3b9b5bdc15..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.txt b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.txt deleted file mode 100644 index 6801286179..0000000000 --- a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43455-sdio.txt +++ /dev/null @@ -1,97 +0,0 @@ -# Cloned from bcm94345wlpagb_p2xx.txt -NVRAMRev=$Rev: 498373 $ -sromrev=11 -vendid=0x14e4 -devid=0x43ab -manfid=0x2d0 -prodid=0x06e4 -#macaddr=00:90:4c:c5:12:38 -macaddr=b8:27:eb:74:f2:6c -nocrc=1 -boardtype=0x6e4 -boardrev=0x1304 - -#XTAL 37.4MHz -xtalfreq=37400 - -btc_mode=1 -#------------------------------------------------------ -#boardflags: 5GHz eTR switch by default -# 2.4GHz eTR switch by default -# bit1 for btcoex -boardflags=0x00480201 -boardflags2=0x40800000 -boardflags3=0x44200100 -phycal_tempdelta=15 -rxchain=1 -txchain=1 -aa2g=1 -aa5g=1 -tssipos5g=1 -tssipos2g=1 -femctrl=0 -AvVmid_c0=1,165,2,100,2,100,2,100,2,100 -pa2ga0=-129,6525,-718 -pa2ga1=-149,4408,-601 -pa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818 -pa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575 -itrsw=1 -pdoffsetcckma0=2 -pdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0 -pdoffset2g40ma0=16 -pdoffset40ma0=0x8888 -pdoffset80ma0=0x8888 -extpagain5g=2 -extpagain2g=2 -tworangetssi2g=1 -tworangetssi5g=1 -# LTECX flags -# WCI2 -ltecxmux=0 -ltecxpadnum=0x0504 -ltecxfnsel=0x22 -ltecxgcigpio=0x32 - -maxp2ga0=80 -ofdmlrbw202gpo=0x0022 -dot11agofdmhrbw202gpo=0x4442 -mcsbw202gpo=0x98444422 -mcsbw402gpo=0x98444422 -maxp5ga0=82,82,82,82 -mcsbw205glpo=0xb9555000 -mcsbw205gmpo=0xb9555000 -mcsbw205ghpo=0xb9555000 -mcsbw405glpo=0xb9555000 -mcsbw405gmpo=0xb9555000 -mcsbw405ghpo=0xb9555000 -mcsbw805glpo=0xb9555000 -mcsbw805gmpo=0xb9555000 -mcsbw805ghpo=0xb9555000 - -swctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff -swctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe -swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3 -swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3 - -vcodivmode=1 -deadman_to=481500000 - -ed_thresh2g=-54 -ed_thresh5g=-54 -eu_edthresh2g=-54 -eu_edthresh5g=-54 -ldo1=4 -rawtempsense=0x1ff -cckPwrIdxCorr=3 -cckTssiDelay=150 -ofdmTssiDelay=150 -txpwr2gAdcScale=1 -txpwr5gAdcScale=1 -dot11b_opts=0x3aa85 -cbfilttype=1 -fdsslevel_ch11=6 - -# Improved Bluetooth coexistence parameters from Cypress -btc_mode=1 -btc_params8=0x4e20 -btc_params1=0x7530 diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac4354-sdio.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac4354-sdio.bin deleted file mode 100644 index e2f7b1f04f..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac4354-sdio.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43569.bin b/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43569.bin deleted file mode 100644 index 8323536a7b..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/brcm/brcmfmac43569.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8192ee_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8192ee_fw.bin deleted file mode 100644 index 7e5bcc0e60..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8192ee_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8192eu_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8192eu_fw.bin deleted file mode 100644 index 7a13280cc2..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8192eu_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8723a_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8723a_fw.bin deleted file mode 100644 index b736f91e83..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8723a_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8723b_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8723b_fw.bin deleted file mode 100644 index 49b2a26f83..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8723b_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8761a_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8761a_fw.bin deleted file mode 100644 index ee4f20180b..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8761a_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8812ae_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8812ae_fw.bin deleted file mode 100644 index 8aca8d28f7..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8812ae_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8821a_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8821a_fw.bin deleted file mode 100644 index c7dffe9938..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8821a_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8822b_config.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8822b_config.bin deleted file mode 100644 index b00270edca..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8822b_config.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8822b_fw.bin b/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8822b_fw.bin deleted file mode 100644 index 5a464614ff..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_bt/rtl8822b_fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8105e-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8105e-1.fw deleted file mode 100644 index 4c2cbd0e60..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8105e-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8106e-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8106e-1.fw deleted file mode 100644 index 85694cb6bf..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8106e-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8106e-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8106e-2.fw deleted file mode 100644 index ac042757e1..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8106e-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8107e-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8107e-1.fw deleted file mode 100644 index c071c2f025..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8107e-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8107e-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8107e-2.fw deleted file mode 100644 index 76fc0544f9..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8107e-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168d-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168d-1.fw deleted file mode 100644 index 99e002de1f..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168d-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168d-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168d-2.fw deleted file mode 100644 index 7022ab0af4..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168d-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-1.fw deleted file mode 100644 index d203bd5d0d..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-2.fw deleted file mode 100644 index 7ea5984cff..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-3.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-3.fw deleted file mode 100644 index 0f888a3267..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168e-3.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168f-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168f-1.fw deleted file mode 100644 index bf7883163e..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168f-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168f-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168f-2.fw deleted file mode 100644 index c3424929bd..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168f-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-1.fw deleted file mode 100644 index 2c628b03a7..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-2.fw deleted file mode 100644 index 944d44e6a6..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-3.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-3.fw deleted file mode 100644 index 0c97d7ea14..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168g-3.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168h-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168h-1.fw deleted file mode 100644 index 296813ab07..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168h-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168h-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168h-2.fw deleted file mode 100644 index df92848abb..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8168h-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8402-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8402-1.fw deleted file mode 100644 index 82fa35d709..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8402-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8411-1.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8411-1.fw deleted file mode 100644 index 72772dbc83..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8411-1.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8411-2.fw b/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8411-2.fw deleted file mode 100644 index e3789fe576..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtl_nic/rtl8411-2.fw and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8188efw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8188efw.bin deleted file mode 100644 index ac9a430a83..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8188efw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8188eufw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8188eufw.bin deleted file mode 100644 index 4ae7e1c5de..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8188eufw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfw.bin deleted file mode 100644 index 77eb1ebef5..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfwU.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfwU.bin deleted file mode 100644 index b231e1d642..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfwU.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfwU_B.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfwU_B.bin deleted file mode 100644 index 3a3e38675c..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cfwU_B.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw.bin deleted file mode 100644 index 3aa7506574..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_A.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_A.bin deleted file mode 100644 index 9569d0a236..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_A.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_B.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_B.bin deleted file mode 100644 index 96089c4c9e..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_B.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_TMSC.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_TMSC.bin deleted file mode 100644 index d1b84d4886..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192cufw_TMSC.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192defw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192defw.bin deleted file mode 100644 index cbb4b887c4..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192defw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192eefw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192eefw.bin deleted file mode 100644 index 4a034d3ae8..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192eefw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192eu_nic.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192eu_nic.bin deleted file mode 100644 index 4a034d3ae8..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192eu_nic.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192sefw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192sefw.bin deleted file mode 100644 index ed4afe8598..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8192sefw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8712u.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8712u.bin deleted file mode 100644 index 3f965a652d..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8712u.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_A.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_A.bin deleted file mode 100644 index 7accded754..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_A.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_B.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_B.bin deleted file mode 100644 index 5c37400025..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_B.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_B_NoBT.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_B_NoBT.bin deleted file mode 100644 index 8e9952cbe5..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723aufw_B_NoBT.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723befw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723befw.bin deleted file mode 100644 index 25e183cb15..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723befw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723bu_nic.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723bu_nic.bin deleted file mode 100644 index 8d53405382..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723bu_nic.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723fw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723fw.bin deleted file mode 100644 index 725f2138e1..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723fw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723fw_B.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723fw_B.bin deleted file mode 100644 index 993c7f6ece..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8723fw_B.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8821aefw.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8821aefw.bin deleted file mode 100644 index 4f84cf94a1..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8821aefw.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8821aefw_wowlan.bin b/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8821aefw_wowlan.bin deleted file mode 100644 index 115d49f157..0000000000 Binary files a/linux/rootfs/board/usr/lib/firmware/rtlwifi/rtl8821aefw_wowlan.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/systemd/system/serial-getty@.service b/linux/rootfs/board/usr/lib/systemd/system/serial-getty@.service deleted file mode 100644 index b3c9e80924..0000000000 --- a/linux/rootfs/board/usr/lib/systemd/system/serial-getty@.service +++ /dev/null @@ -1,48 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1-or-later -# -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Serial Getty on %I -Documentation=man:agetty(8) man:systemd-getty-generator(8) -Documentation=http://0pointer.de/blog/projects/serial-console.html -BindsTo=dev-%i.device -After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target - -# If additional gettys are spawned during boot then we should make -# sure that this is synchronized before getty.target, even though -# getty.target didn't actually pull it in. -Before=getty.target -IgnoreOnIsolate=yes - -# IgnoreOnIsolate causes issues with sulogin, if someone isolates -# rescue.target or starts rescue.service from multi-user.target or -# graphical.target. -Conflicts=rescue.service -Before=rescue.service - -[Service] -# The '-o' option value tells agetty to replace 'login' arguments with an -# option to preserve environment (-p), followed by '--' for safety, and then -# the entered username. -ExecStart=-/sbin/getty -L -l /usr/bin/auto-root-login -n ttyS0 0 vt100 -Type=idle -Restart=always -UtmpIdentifier=%I -StandardInput=tty -StandardOutput=tty -TTYPath=/dev/%I -TTYReset=yes -TTYVHangup=yes -KillMode=process -IgnoreSIGPIPE=no -SendSIGHUP=yes - -[Install] -WantedBy=getty.target - diff --git a/linux/rootfs/board/usr/lib/systemd/system/syslog-ng@.service b/linux/rootfs/board/usr/lib/systemd/system/syslog-ng@.service deleted file mode 100644 index 78022b590f..0000000000 --- a/linux/rootfs/board/usr/lib/systemd/system/syslog-ng@.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=System Logging Service -Requires=syslog.socket - -[Service] -ExecStart=/usr/sbin/syslog-ng -n -StandardOutput=null - -[Install] -Alias=syslog.service -WantedBy=multi-user.target - diff --git a/linux/rootfs/board/usr/lib/udev/ata_id b/linux/rootfs/board/usr/lib/udev/ata_id deleted file mode 100755 index 5e075bc474..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/ata_id and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/cdrom_id b/linux/rootfs/board/usr/lib/udev/cdrom_id deleted file mode 100755 index ef2315d6f7..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/cdrom_id and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/collect b/linux/rootfs/board/usr/lib/udev/collect deleted file mode 100755 index 694785dc3b..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/collect and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/hid2hci b/linux/rootfs/board/usr/lib/udev/hid2hci deleted file mode 100755 index 49c3bc52d8..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/hid2hci and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/hwclock-set b/linux/rootfs/board/usr/lib/udev/hwclock-set deleted file mode 100755 index eacf948df8..0000000000 --- a/linux/rootfs/board/usr/lib/udev/hwclock-set +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# Reset the System Clock to UTC if the hardware clock from which it -# was copied by the kernel was in localtime. - -dev=$1 - -if [ -e /run/systemd/system ] ; then - exit 0 -fi - -if [ -e /run/udev/hwclock-set ]; then - exit 0 -fi - -if [ -f /etc/default/rcS ] ; then - . /etc/default/rcS -fi - -# These defaults are user-overridable in /etc/default/hwclock -BADYEAR=no -HWCLOCKACCESS=yes -HWCLOCKPARS= -HCTOSYS_DEVICE=rtc0 -if [ -f /etc/default/hwclock ] ; then - . /etc/default/hwclock -fi - -if [ yes = "$BADYEAR" ] ; then - /sbin/hwclock --rtc=$dev --systz --badyear - /sbin/hwclock --rtc=$dev --hctosys --badyear -else - /sbin/hwclock --rtc=$dev --systz - /sbin/hwclock --rtc=$dev --hctosys -fi - -# Note 'touch' may not be available in initramfs -> /run/udev/hwclock-set diff --git a/linux/rootfs/board/usr/lib/udev/hwdb.bin b/linux/rootfs/board/usr/lib/udev/hwdb.bin deleted file mode 100644 index 8638d430ff..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/hwdb.bin and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/ifupdown-hotplug b/linux/rootfs/board/usr/lib/udev/ifupdown-hotplug deleted file mode 100755 index a78ae04a4f..0000000000 --- a/linux/rootfs/board/usr/lib/udev/ifupdown-hotplug +++ /dev/null @@ -1,143 +0,0 @@ -#!/bin/sh -e -# -# run /sbin/{ifup,ifdown} with the --allow=hotplug option. -# - -PATH='/sbin:/bin:/usr/sbin:/usr/bin' - -if [ -x /usr/bin/logger ]; then - LOGGER=/usr/bin/logger -elif [ -x /bin/logger ]; then - LOGGER=/bin/logger -else - unset LOGGER -fi - -# for diagnostics -if [ -t 1 -a -z "$LOGGER" ] || [ ! -e '/dev/log' ]; then - mesg() { - echo "$@" >&2 - } -elif [ -t 1 ]; then - mesg() { - echo "$@" - $LOGGER -t "${0##*/}[$$]" "$@" - } -else - mesg() { - $LOGGER -t "${0##*/}[$$]" "$@" - } -fi - -if [ -z "$INTERFACE" ]; then - mesg "Bad ifupdown udev helper invocation: \$INTERFACE is not set" - exit 1 -fi - -check_program() { - [ -x $1 ] && return 0 - - mesg "ERROR: $1 not found. You need to install the ifupdown package." - mesg "ifupdown udev helper $ACTION event for $INTERFACE not handled." - exit 1 -} - -wait_for_interface() { - local interface=$1 - local state - - while :; do - read state /sys/class/net/$interface/operstate 2>/dev/null || true - if [ "$state" != down ]; then - return 0 - fi - sleep 1 - done -} - -net_ifup() { - check_program /sbin/ifup - - # exit if the interface is not configured as allow-hotplug - if ! ifquery --allow hotplug -l | grep -q "^${INTERFACE}\$"; then - exit 0 - fi - - if [ -d /run/systemd/system ]; then - exec systemctl --no-block start $(systemd-escape --template ifup@.service $INTERFACE) - fi - - local out=$(ps -C ifup ho args) - if [ "${out%$INTERFACE*}" != "$out" ]; then - mesg "Already ifup-ing interface $INTERFACE" - exit 0 - fi - - wait_for_interface lo - - exec ifup --allow=hotplug $INTERFACE -} - -net_ifdown() { - check_program /sbin/ifdown - - # systemd will automatically ifdown the interface on device - # removal by binding the instanced service to the network device - if [ -d /run/systemd/system ]; then - exit 0 - fi - - local out=$(ps -C ifdown ho args) - if [ "${out%$INTERFACE*}" != "$out" ]; then - mesg "Already ifdown-ing interface $INTERFACE" - exit 0 - fi - - exec ifdown --allow=hotplug $INTERFACE -} - -do_everything() { - -case "$ACTION" in - add) - # these interfaces generate hotplug events *after* they are brought up - case $INTERFACE in - ppp*|ippp*|isdn*|plip*|lo|irda*|ipsec*) - exit 0 ;; - esac - - net_ifup - ;; - - remove) - # the pppd persist option may have been used, so it should not be killed - case $INTERFACE in - ppp*) - exit 0 ;; - esac - - net_ifdown - ;; - - *) - mesg "NET $ACTION event not supported" - exit 1 - ;; -esac - -} - -# under systemd we don't do synchronous operations, so we can run in the -# foreground; we also need to, as forked children get killed right away under -# systemd -if [ -d /run/systemd/system ]; then - do_everything -else - # under sysvinit/upstart we need to fork as we start the long-running - # "ifup". but there, forked processes won't get killed. - # When udev_log="debug" stdout and stderr are pipes connected to udevd. - # They need to be closed or udevd will wait for this process which will - # deadlock with udevsettle until the timeout. - exec > /dev/null 2> /dev/null - do_everything & -fi diff --git a/linux/rootfs/board/usr/lib/udev/mtd_probe b/linux/rootfs/board/usr/lib/udev/mtd_probe deleted file mode 100755 index 9a9750e640..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/mtd_probe and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/mtp-probe b/linux/rootfs/board/usr/lib/udev/mtp-probe deleted file mode 100755 index 4c586d4e03..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/mtp-probe and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/10-local-rpi.rules b/linux/rootfs/board/usr/lib/udev/rules.d/10-local-rpi.rules deleted file mode 100644 index 001571d3f5..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/10-local-rpi.rules +++ /dev/null @@ -1,3 +0,0 @@ -SUBSYSTEM=="vchiq", GROUP="video", MODE="0660" -SUBSYSTEM=="vc-sm", GROUP="video", MODE="0660" -SUBSYSTEM=="bcm2708_vcio", GROUP="video", MODE="0660" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/40-usb_modeswitch.rules b/linux/rootfs/board/usr/lib/udev/rules.d/40-usb_modeswitch.rules deleted file mode 100644 index 3d8de630d9..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/40-usb_modeswitch.rules +++ /dev/null @@ -1,1181 +0,0 @@ -# Part of usb-modeswitch-data, version 20170120 -# -# Works with usb_modeswitch versions >= 2.4.0. Slash before %k parameter -# is for compatibility only. Versions >= 2.5.0 don't need it. -# -ACTION!="add|change", GOTO="modeswitch_rules_end" - -# Adds a symlink "gsmmodem[n]" to the lowest ttyUSB port with interrupt -# transfer; checked against a list of known modems, or else no action -KERNEL=="ttyUSB*", ATTRS{bNumConfigurations}=="*", PROGRAM="usb_modeswitch --symlink-name %p %s{idVendor} %s{idProduct} %E{PRODUCT}", SYMLINK+="%c" - -SUBSYSTEM!="usb", ACTION!="add",, GOTO="modeswitch_rules_end" - -# Generic entry for most Huawei devices, excluding Android phones -ATTRS{idVendor}=="12d1", ATTRS{manufacturer}!="Android", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '/%k'" - -# HP LaserJet Professional P1102 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="002a", RUN+="usb_modeswitch '/%k'" - -# HP LaserJet Professional P1102w -ATTR{idVendor}=="03f0", ATTR{idProduct}=="032a", RUN+="usb_modeswitch '/%k'" - -# HP hs3110 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="521d", RUN+="usb_modeswitch '/%k'" - -# HP hs3120 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="531d", RUN+="usb_modeswitch '/%k'" - -# HP hs3114 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="541d", RUN+="usb_modeswitch '/%k'" - -# HP hs4112 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", RUN+="usb_modeswitch '/%k'" - -# HP lt4225 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="631d", RUN+="usb_modeswitch '/%k'" - -# HP lt4226 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="641d", RUN+="usb_modeswitch '/%k'" - -# HP lt4227 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="681d", RUN+="usb_modeswitch '/%k'" - -# HP lt4211 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="911d", RUN+="usb_modeswitch '/%k'" - -# HP lt4110 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="931d", RUN+="usb_modeswitch '/%k'" - -# HP lt4114 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="9a1d", RUN+="usb_modeswitch '/%k'" - -# HP lt4120 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="9d1d", RUN+="usb_modeswitch '/%k'" - -# Quanta MU-Q101 -ATTR{idVendor}=="0408", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# Quanta 1KR / USB-lte 7410 -ATTR{idVendor}=="0408", ATTR{idProduct}=="ea17", RUN+="usb_modeswitch '/%k'" - -# Quanta 1K3 LTE -ATTR{idVendor}=="0408", ATTR{idProduct}=="ea25", RUN+="usb_modeswitch '/%k'" - -# Quanta MobileGenie 4G LTE, Quanta 1K6 -ATTR{idVendor}=="0408", ATTR{idProduct}=="ea43", RUN+="usb_modeswitch '/%k'" - -# MU-Q110, Yota Router (Quanta 1QDLZZZ0ST2) -ATTR{idVendor}=="0408", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# SpeedUp SU-8500U -ATTR{idVendor}=="0408", ATTR{idProduct}=="f001", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-10 -ATTR{idVendor}=="0421", ATTR{idProduct}=="060c", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-15 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0610", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-12 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0618", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-11 -ATTR{idVendor}=="0421", ATTR{idProduct}=="061d", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-17 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0622", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-18 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0627", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-19 -ATTR{idVendor}=="0421", ATTR{idProduct}=="062c", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-7M-01 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0632", RUN+="usb_modeswitch '/%k'" - -# Nokia CS-21M-02 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0637", RUN+="usb_modeswitch '/%k'" - -# Logitech G920 Racing Wheel -ATTR{idVendor}=="046d", ATTR{idProduct}=="c261", RUN+="usb_modeswitch '/%k'" - -# Philips (?), Vodafone MD950 (Wisue Technology) -ATTR{idVendor}=="0471", ATTR{idProduct}=="1210", RUN+="usb_modeswitch '/%k'" - -# Philips TalkTalk (NXP Semiconductors "Dragonfly") -ATTR{idVendor}=="0471", ATTR{idProduct}=="1237", RUN+="usb_modeswitch '/%k'" - -# Kyocera W06K CDMA modem -ATTR{idVendor}=="0482", ATTR{idProduct}=="024d", RUN+="usb_modeswitch '/%k'" - -# I-O Data WMX2-U Wimax -ATTR{idVendor}=="04bb", ATTR{idProduct}=="bccd", RUN+="usb_modeswitch '/%k'" - -# Alcatel-Lucent ABS-T920 -ATTR{idVendor}=="04cc", ATTR{idProduct}=="2251", RUN+="usb_modeswitch '/%k'" - -# Alcatel-Lucent T930S -ATTR{idVendor}=="04cc", ATTR{idProduct}=="225c", RUN+="usb_modeswitch '/%k'" - -# Nexperia TM TD-SCDMA -ATTR{idVendor}=="04cc", ATTR{idProduct}=="226e", RUN+="usb_modeswitch '/%k'" - -# Nexperia TM TD-SCDMA (Variant) -ATTR{idVendor}=="04cc", ATTR{idProduct}=="226f", RUN+="usb_modeswitch '/%k'" - -# Samsung GT-B1110 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="680c", RUN+="usb_modeswitch '/%k'" - -# Samsung GT-B3730 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="689a", RUN+="usb_modeswitch '/%k'" - -# Samsung U209 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Sunplus Techn. SU-3200U -ATTR{idVendor}=="04fc", ATTR{idProduct}=="2140", RUN+="usb_modeswitch '/%k'" - -# AVM Fritz!Wlan USB Stick N v2 -ATTR{idVendor}=="057c", ATTR{idProduct}=="62ff", RUN+="usb_modeswitch '/%k'" - -# AVM Fritz!Wlan USB Stick N -ATTR{idVendor}=="057c", ATTR{idProduct}=="84ff", RUN+="usb_modeswitch '/%k'" - -# ZyXel WAH1004/WAH3004 -ATTR{idVendor}=="0586", ATTR{idProduct}=="2030", RUN+="usb_modeswitch '/%k'" - -# Axesstel Modems (w/ initial idProduct 0x0010) -ATTR{idVendor}=="05c6", ATTR{idProduct}=="0010", RUN+="usb_modeswitch '/%k'" - -# Option GlobeTrotter GX0201, Older Option devices, AnyDATA devices, Bless UC165, Celot K-300 a.o., TechFaith Venus VT-18, Celot CT-680, Quirky Option devices, Samsung SGH-Z810, Prolink P2000 CDMA, StrongRising device, Vertex Wireless 100 Series -ATTR{idVendor}=="05c6", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# Various USB modems -ATTR{idVendor}=="05c6", ATTR{idProduct}=="2000", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-162-U5, DWM-162 C1, Micromax MMX 300c -ATTR{idVendor}=="05c6", ATTR{idProduct}=="2001", RUN+="usb_modeswitch '/%k'" - -# AnyDATA APE-540H -ATTR{idVendor}=="05c6", ATTR{idProduct}=="6503", RUN+="usb_modeswitch '/%k'" - -# Alcatel-sbell ASB TL131 TD-LTE -ATTR{idVendor}=="05c6", ATTR{idProduct}=="9024", RUN+="usb_modeswitch '/%k'" - -# U901 (LTE modem) -ATTR{idVendor}=="05c6", ATTR{idProduct}=="98ff", RUN+="usb_modeswitch '/%k'" - -# Siptune LM-75 ("LinuxModem"), EWangshikong 4G -ATTR{idVendor}=="05c6", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Qtronix EVDO 3G Modem (for TianYi) -ATTR{idVendor}=="05c7", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# ZE-3G 7.2Mbs HSPA modem -ATTR{idVendor}=="0685", ATTR{idProduct}=="2000", RUN+="usb_modeswitch '/%k'" - -# InfoCert Business Key (SmartCard/Reader emulation) -ATTR{idVendor}=="072f", ATTR{idProduct}=="100d", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-156 HSUPA 3.75G a.o. -ATTR{idVendor}=="07d1", ATTR{idProduct}=="a800", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-156 HSUPA 3.75G USB Modem -ATTR{idVendor}=="07d1", ATTR{idProduct}=="a804", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-151 A1 -ATTR{idVendor}=="07d1", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Dymo LabelManager -ATTR{idVendor}=="0922", ATTR{idProduct}=="1001", RUN+="usb_modeswitch '/%k'" - -# Dymo LabelManager 420P -ATTR{idVendor}=="0922", ATTR{idProduct}=="1003", RUN+="usb_modeswitch '/%k'" - -# Dymo LabelManager Wireless PnP -ATTR{idVendor}=="0922", ATTR{idProduct}=="1007", RUN+="usb_modeswitch '/%k'" - -# Toshiba G450 -ATTR{idVendor}=="0930", ATTR{idProduct}=="0d46", RUN+="usb_modeswitch '/%k'" - -# Zydas ZD1211RW WLAN USB, Sphairon HomeLink 1202 (Variant 1) -ATTR{idVendor}=="0ace", ATTR{idProduct}=="2011", RUN+="usb_modeswitch '/%k'" - -# Zydas ZD1211RW WLAN USB, Sphairon HomeLink 1202 (Variant 2) -ATTR{idVendor}=="0ace", ATTR{idProduct}=="20ff", RUN+="usb_modeswitch '/%k'" - -# Option iCon 711 -ATTR{idVendor}=="0af0", ATTR{idProduct}=="4007", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6711", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6731", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6751", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6771", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6791", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6811", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6911", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6951", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="6971", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7011", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7031", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7051", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7071", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7111", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7211", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7251", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7271", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7301", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7311", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7361", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7381", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7401", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7501", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7601", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7701", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7706", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7801", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7901", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7a01", RUN+="usb_modeswitch '/%k'" - -# Option iCon 461 -ATTR{idVendor}=="0af0", ATTR{idProduct}=="7a05", RUN+="usb_modeswitch '/%k'" - -# Option Globetrotter (Variant) -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8006", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8200", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8201", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8300", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8302", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8304", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8400", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8600", RUN+="usb_modeswitch '/%k'" - -# Option GI0643 (aka XYFI) -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8700", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8800", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="8900", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="9000", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="9200", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="c031", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="c100", RUN+="usb_modeswitch '/%k'" - -# Option GlobeTrotter GI1515 -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d001", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d013", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d031", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d033", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d035", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d055", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d057", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d058", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d155", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d157", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d255", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d257", RUN+="usb_modeswitch '/%k'" - -# Option HSO device -ATTR{idVendor}=="0af0", ATTR{idProduct}=="d357", RUN+="usb_modeswitch '/%k'" - -# Olivetti Olicard 100 and others -ATTR{idVendor}=="0b3c", ATTR{idProduct}=="c700", RUN+="usb_modeswitch '/%k'" - -# Olivetti Olicard 145, 155 -ATTR{idVendor}=="0b3c", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Olivetti Olicard 160 -ATTR{idVendor}=="0b3c", ATTR{idProduct}=="f00c", RUN+="usb_modeswitch '/%k'" - -# Olivetti Olicard 500 -ATTR{idVendor}=="0b3c", ATTR{idProduct}=="f017", RUN+="usb_modeswitch '/%k'" - -# Ericsson F5521gw -ATTR{idVendor}=="0bdb", ATTR{idProduct}=="190d", RUN+="usb_modeswitch '/%k'" - -# Ericsson F5521gw (Variant) -ATTR{idVendor}=="0bdb", ATTR{idProduct}=="1910", RUN+="usb_modeswitch '/%k'" - -# Atheros Wireless / Netgear WNDA3200 -ATTR{idVendor}=="0cf3", ATTR{idProduct}=="20ff", RUN+="usb_modeswitch '/%k'" - -# Kobil mIdentity 3G (1) -ATTR{idVendor}=="0d46", ATTR{idProduct}=="45a1", RUN+="usb_modeswitch '/%k'" - -# Kobil mIdentity 3G (2) -ATTR{idVendor}=="0d46", ATTR{idProduct}=="45a5", RUN+="usb_modeswitch '/%k'" - -# Mobile Action ("Smart Cable") -ATTR{idVendor}=="0df7", ATTR{idProduct}=="0800", RUN+="usb_modeswitch '/%k'" - -# MediaTek MT6276M and others, MediaTek/Medion S4222 and probably others -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0002", RUN+="usb_modeswitch '/%k'" - -# MediaTek Wimax USB Card -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="7109", RUN+="usb_modeswitch '/%k'" - -# BlackBerry Q10 and Z10 -ATTR{idVendor}=="0fca", ATTR{idProduct}=="8020", RUN+="usb_modeswitch '/%k'" - -# Sony Ericsson MD300 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="d0cf", RUN+="usb_modeswitch '/%k'" - -# Sony Ericsson EC400 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="d0df", RUN+="usb_modeswitch '/%k'" - -# Sony Ericsson MD400 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="d0e1", RUN+="usb_modeswitch '/%k'" - -# Sony Ericsson MD400G -ATTR{idVendor}=="0fce", ATTR{idProduct}=="d103", RUN+="usb_modeswitch '/%k'" - -# GW D301 (Advinne AMC) -ATTR{idVendor}=="0fd1", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# LG LDU-1900D EV-DO (Rev. A) -ATTR{idVendor}=="1004", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# LG HDM-2100 (EVDO Rev.A USB modem) -ATTR{idVendor}=="1004", ATTR{idProduct}=="607f", RUN+="usb_modeswitch '/%k'" - -# LG L-02A -ATTR{idVendor}=="1004", ATTR{idProduct}=="610c", RUN+="usb_modeswitch '/%k'" - -# LG L-05A -ATTR{idVendor}=="1004", ATTR{idProduct}=="613a", RUN+="usb_modeswitch '/%k'" - -# LG LUU-2100TI (aka AT&T USBConnect Turbo) -ATTR{idVendor}=="1004", ATTR{idProduct}=="613f", RUN+="usb_modeswitch '/%k'" - -# LG L-07A -ATTR{idVendor}=="1004", ATTR{idProduct}=="614e", RUN+="usb_modeswitch '/%k'" - -# LG LUU-2110TI -ATTR{idVendor}=="1004", ATTR{idProduct}=="6156", RUN+="usb_modeswitch '/%k'" - -# LG AD600 -ATTR{idVendor}=="1004", ATTR{idProduct}=="6190", RUN+="usb_modeswitch '/%k'" - -# LG VL600 -ATTR{idVendor}=="1004", ATTR{idProduct}=="61aa", RUN+="usb_modeswitch '/%k'" - -# LG L-02C LTE -ATTR{idVendor}=="1004", ATTR{idProduct}=="61dd", RUN+="usb_modeswitch '/%k'" - -# LG SD711 -ATTR{idVendor}=="1004", ATTR{idProduct}=="61e7", RUN+="usb_modeswitch '/%k'" - -# LG L-08C (NTT docomo) -ATTR{idVendor}=="1004", ATTR{idProduct}=="61eb", RUN+="usb_modeswitch '/%k'" - -# LG L-03D LTE/3G -ATTR{idVendor}=="1004", ATTR{idProduct}=="6327", RUN+="usb_modeswitch '/%k'" - -# UTStarcom UM175 (distributor "Alltel") -ATTR{idVendor}=="106c", ATTR{idProduct}=="3b03", RUN+="usb_modeswitch '/%k'" - -# Pantech / UTStarcom UMW190 (Verizon) -ATTR{idVendor}=="106c", ATTR{idProduct}=="3b05", RUN+="usb_modeswitch '/%k'" - -# UTStarcom UM185E (distributor "Alltel") -ATTR{idVendor}=="106c", ATTR{idProduct}=="3b06", RUN+="usb_modeswitch '/%k'" - -# Pantech UML290 -ATTR{idVendor}=="106c", ATTR{idProduct}=="3b11", RUN+="usb_modeswitch '/%k'" - -# Option Beemo / Pantech P4200 LTE -ATTR{idVendor}=="106c", ATTR{idProduct}=="3b14", RUN+="usb_modeswitch '/%k'" - -# Sagem F@ST 9520-35-GLR -ATTR{idVendor}=="1076", ATTR{idProduct}=="7f40", RUN+="usb_modeswitch '/%k'" - -# Hisense E910 EVDO Phone -ATTR{idVendor}=="109b", ATTR{idProduct}=="f009", RUN+="usb_modeswitch '/%k'" - -# Pantech/Verizon UML295 -ATTR{idVendor}=="10a9", ATTR{idProduct}=="606f", RUN+="usb_modeswitch '/%k'" - -# Pantech LTE Modem -ATTR{idVendor}=="10a9", ATTR{idProduct}=="6080", RUN+="usb_modeswitch '/%k'" - -# Sierra devices (specific driver) -ATTR{idVendor}=="1199", ATTR{idProduct}=="0fff", RUN+="usb_modeswitch '/%k'" - -# Sierra MC8305 -ATTR{idVendor}=="1199", ATTR{idProduct}=="9011", RUN+="usb_modeswitch '/%k'" - -# Sierra MC8355 -ATTR{idVendor}=="1199", ATTR{idProduct}=="9013", RUN+="usb_modeswitch '/%k'" - -# Sierra MC8355 Variant -ATTR{idVendor}=="1199", ATTR{idProduct}=="9017", RUN+="usb_modeswitch '/%k'" - -# Sierra MC7770 -ATTR{idVendor}=="1199", ATTR{idProduct}=="901b", RUN+="usb_modeswitch '/%k'" - -# Sierra EM7700 -ATTR{idVendor}=="1199", ATTR{idProduct}=="901c", RUN+="usb_modeswitch '/%k'" - -# Sierra EM7355 -ATTR{idVendor}=="1199", ATTR{idProduct}=="901f", RUN+="usb_modeswitch '/%k'" - -# Sierra EM7305 -ATTR{idVendor}=="1199", ATTR{idProduct}=="9041", RUN+="usb_modeswitch '/%k'" - -# Sierra AC340U -ATTR{idVendor}=="1199", ATTR{idProduct}=="9051", RUN+="usb_modeswitch '/%k'" - -# Sierra AC770S -ATTR{idVendor}=="1199", ATTR{idProduct}=="9053", RUN+="usb_modeswitch '/%k'" - -# Sierra EM7305 -ATTR{idVendor}=="1199", ATTR{idProduct}=="9063", RUN+="usb_modeswitch '/%k'" - -# Digicom 8E4455 (and all Pirelli devices - EXPERIMENTAL) -ATTR{idVendor}=="1266", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# Huawei ME909u-521 (MBIM, dummy config) -ATTR{idVendor}=="12d1", ATTR{idProduct}=="1573", RUN+="usb_modeswitch '/%k'" - -# Huawei ME906, ME909 (MBIM, dummy config) -ATTR{idVendor}=="12d1", ATTR{idProduct}=="15c1", RUN+="usb_modeswitch '/%k'" - -# Cisco AM10 "Valet Connector" -ATTR{idVendor}=="1307", ATTR{idProduct}=="1169", RUN+="usb_modeswitch '/%k'" - -# Novatel Wireless devices -ATTR{idVendor}=="1410", ATTR{idProduct}=="5010", RUN+="usb_modeswitch '/%k'" - -# Novatel MC990D -ATTR{idVendor}=="1410", ATTR{idProduct}=="5020", RUN+="usb_modeswitch '/%k'" - -# Novatel MC996D -ATTR{idVendor}=="1410", ATTR{idProduct}=="5023", RUN+="usb_modeswitch '/%k'" - -# Novatel U760 -ATTR{idVendor}=="1410", ATTR{idProduct}=="5030", RUN+="usb_modeswitch '/%k'" - -# Novatel MC760 3G -ATTR{idVendor}=="1410", ATTR{idProduct}=="5031", RUN+="usb_modeswitch '/%k'" - -# Novatel Generic MiFi 2352 / Vodafone MiFi 2352 -ATTR{idVendor}=="1410", ATTR{idProduct}=="5041", RUN+="usb_modeswitch '/%k'" - -# Novatel MiFi 4082 -ATTR{idVendor}=="1410", ATTR{idProduct}=="5055", RUN+="usb_modeswitch '/%k'" - -# Novatel Wireless MC545 HSPA, U679 LTE -ATTR{idVendor}=="1410", ATTR{idProduct}=="5059", RUN+="usb_modeswitch '/%k'" - -# Novatel Generic MiFi 2372 / Vodafone MiFi 2372 -ATTR{idVendor}=="1410", ATTR{idProduct}=="7001", RUN+="usb_modeswitch '/%k'" - -# Novatel U620L -ATTR{idVendor}=="1410", ATTR{idProduct}=="9020", RUN+="usb_modeswitch '/%k'" - -# Sequans SQN1210/SQN1220 (generic chipsets) -ATTR{idVendor}=="148e", ATTR{idProduct}=="a000", RUN+="usb_modeswitch '/%k'" - -# Motorola 802.11 bg WLAN (TER/GUSB3-E) -ATTR{idVendor}=="148f", ATTR{idProduct}=="2578", RUN+="usb_modeswitch '/%k'" - -# RaLink MT7601U -ATTR{idVendor}=="148f", ATTR{idProduct}=="2878", RUN+="usb_modeswitch '/%k'" - -# China TeleCom CBP7.0 -ATTR{idVendor}=="15eb", ATTR{idProduct}=="7153", RUN+="usb_modeswitch '/%k'" - -# Amoi H-01 -ATTR{idVendor}=="1614", ATTR{idProduct}=="0800", RUN+="usb_modeswitch '/%k'" - -# Amoi H-02 -ATTR{idVendor}=="1614", ATTR{idProduct}=="0802", RUN+="usb_modeswitch '/%k'" - -# Anydata ADU-890WH -ATTR{idVendor}=="16d5", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# C-motech CHU-628S -ATTR{idVendor}=="16d8", ATTR{idProduct}=="6281", RUN+="usb_modeswitch '/%k'" - -# C-motech D-50 (aka "CDU-680", "CNU-680") -ATTR{idVendor}=="16d8", ATTR{idProduct}=="6803", RUN+="usb_modeswitch '/%k'" - -# C-motech CDU-685a -ATTR{idVendor}=="16d8", ATTR{idProduct}=="6804", RUN+="usb_modeswitch '/%k'" - -# C-motech CHU-629S -ATTR{idVendor}=="16d8", ATTR{idProduct}=="700a", RUN+="usb_modeswitch '/%k'" - -# C-motech CHU-629S (Variant) -ATTR{idVendor}=="16d8", ATTR{idProduct}=="700b", RUN+="usb_modeswitch '/%k'" - -# C-motech CGU-628 (aka "Franklin Wireless CGU-628A" aka "4G Systems XS Stick W12") -ATTR{idVendor}=="16d8", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Axesstel MV210 -ATTR{idVendor}=="1726", ATTR{idProduct}=="1900", RUN+="usb_modeswitch '/%k'" - -# Axesstel MU130 -ATTR{idVendor}=="1726", ATTR{idProduct}=="f00e", RUN+="usb_modeswitch '/%k'" - -# Spreadtrum SC7702 -ATTR{idVendor}=="1782", ATTR{idProduct}=="0003", RUN+="usb_modeswitch '/%k'" - -# Spreadtrum SC7702 (Variant) -ATTR{idVendor}=="1782", ATTR{idProduct}=="0023", RUN+="usb_modeswitch '/%k'" - -# JOA Telecom LM-700r -ATTR{idVendor}=="198a", ATTR{idProduct}=="0003", RUN+="usb_modeswitch '/%k'" - -# Beceem BCSM250 -ATTR{idVendor}=="198f", ATTR{idProduct}=="bccd", RUN+="usb_modeswitch '/%k'" - -# ZTE MU351 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0003", RUN+="usb_modeswitch '/%k'" - -# ZTE AC581 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0026", RUN+="usb_modeswitch '/%k'" - -# ZTE MF636DB -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0033", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K2525 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0040", RUN+="usb_modeswitch '/%k'" - -# ZTE MF110 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0053", RUN+="usb_modeswitch '/%k'" - -# ZTE MF110 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0083", RUN+="usb_modeswitch '/%k'" - -# ZTE MU330 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0090", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K4505-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0101", RUN+="usb_modeswitch '/%k'" - -# ZTE MF112 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0103", RUN+="usb_modeswitch '/%k'" - -# ZTE MF637 (Variant for Orange France) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0110", RUN+="usb_modeswitch '/%k'" - -# ZTE MF651 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0115", RUN+="usb_modeswitch '/%k'" - -# ZTE MF652 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0146", RUN+="usb_modeswitch '/%k'" - -# ZTE MF190 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0149", RUN+="usb_modeswitch '/%k'" - -# ZTE MF656A, MF668A, MF669 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0150", RUN+="usb_modeswitch '/%k'" - -# ZTE MF190 (Variant) and others -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0154", RUN+="usb_modeswitch '/%k'" - -# ZTE MF820 4G LTE -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0166", RUN+="usb_modeswitch '/%k'" - -# ZTE A371B -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0169", RUN+="usb_modeswitch '/%k'" - -# ZTE MF820s, MF832s -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0198", RUN+="usb_modeswitch '/%k'" - -# Onda MT8205 LTE -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0266", RUN+="usb_modeswitch '/%k'" - -# ZTE MF821D (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0304", RUN+="usb_modeswitch '/%k'" - -# ZTE MF821D/MF826 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0318", RUN+="usb_modeswitch '/%k'" - -# ZTE MF821D -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0325", RUN+="usb_modeswitch '/%k'" - -# ZTE MF90 Mobile Hotspot -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0388", RUN+="usb_modeswitch '/%k'" - -# Telewell TW-LTE 4G -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0413", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K3805-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1001", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K3570-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1007", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K3571-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1009", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K3806-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1013", RUN+="usb_modeswitch '/%k'" - -# Vodafone K5006Z (MF821) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1017", RUN+="usb_modeswitch '/%k'" - -# Vodafone / ZTE R203 Router -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1019", RUN+="usb_modeswitch '/%k'" - -# Vodafone / ZTE R203 Router -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1020", RUN+="usb_modeswitch '/%k'" - -# Vodafone / ZTE K4201-z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1022", RUN+="usb_modeswitch '/%k'" - -# Vodafone / ZTE R212 Router -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1026", RUN+="usb_modeswitch '/%k'" - -# Vodafone K5008-z (MF823) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1030", RUN+="usb_modeswitch '/%k'" - -# Vodafone / ZTE R206-z Router -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1034", RUN+="usb_modeswitch '/%k'" - -# ZTE / Vodafone K4607-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1038", RUN+="usb_modeswitch '/%k'" - -# Vodafone / ZTE R209-z Router -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1042", RUN+="usb_modeswitch '/%k'" - -# ZTE MF730 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1046", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K4510-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1171", RUN+="usb_modeswitch '/%k'" - -# Vodafone / ZTE K3770-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1175", RUN+="usb_modeswitch '/%k'" - -# Vodafone (ZTE) K3772-Z -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1179", RUN+="usb_modeswitch '/%k'" - -# ZTE MF691 (T-Mobile Rocket 2.0) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1201", RUN+="usb_modeswitch '/%k'" - -# ZTE MF192 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1207", RUN+="usb_modeswitch '/%k'" - -# ZTE MF195 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1210", RUN+="usb_modeswitch '/%k'" - -# ZTE MF192 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1216", RUN+="usb_modeswitch '/%k'" - -# ZTE MF192 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1219", RUN+="usb_modeswitch '/%k'" - -# ZTE MF190 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1224", RUN+="usb_modeswitch '/%k'" - -# ZTE MF668 (Variant), MF70 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1225", RUN+="usb_modeswitch '/%k'" - -# ZTE MF680 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1227", RUN+="usb_modeswitch '/%k'" - -# ZTE MFxxx -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1232", RUN+="usb_modeswitch '/%k'" - -# ZTE MFxxx -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1233", RUN+="usb_modeswitch '/%k'" - -# ZTE / Vodafone K4201 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1237", RUN+="usb_modeswitch '/%k'" - -# ZTE MF825A -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1238", RUN+="usb_modeswitch '/%k'" - -# ZTE MF730 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1420", RUN+="usb_modeswitch '/%k'" - -# ZTE MFxxx -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1511", RUN+="usb_modeswitch '/%k'" - -# ZTE MF192 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1514", RUN+="usb_modeswitch '/%k'" - -# ZTE MF192 (Variant) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1517", RUN+="usb_modeswitch '/%k'" - -# ZTE MF652 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1520", RUN+="usb_modeswitch '/%k'" - -# ZTE MF591 TMobile -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1523", RUN+="usb_modeswitch '/%k'" - -# ZTE MF196 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1528", RUN+="usb_modeswitch '/%k'" - -# ZTE MF190J -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1536", RUN+="usb_modeswitch '/%k'" - -# ZTE MF190J -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1542", RUN+="usb_modeswitch '/%k'" - -# ZTE MF195E -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1580", RUN+="usb_modeswitch '/%k'" - -# ZTE MF710M Variants -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1588", RUN+="usb_modeswitch '/%k'" - -# ZTE MF710 (Vietnam) a.o. -ATTR{idVendor}=="19d2", ATTR{idProduct}=="1595", RUN+="usb_modeswitch '/%k'" - -# ZTE devices, some Onda devices -ATTR{idVendor}=="19d2", ATTR{idProduct}=="2000", RUN+="usb_modeswitch '/%k'" - -# ZTE MF60 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="2004", RUN+="usb_modeswitch '/%k'" - -# ZTE AX226 WiMax -ATTR{idVendor}=="19d2", ATTR{idProduct}=="bccd", RUN+="usb_modeswitch '/%k'" - -# ZTE AC682 (a.k.a. SmartFren Connex) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="ffde", RUN+="usb_modeswitch '/%k'" - -# ZTE "ffe" devices 1 (e.g. Cricket A605) -ATTR{idVendor}=="19d2", ATTR{idProduct}=="ffe6", RUN+="usb_modeswitch '/%k'" - -# ZTE "ff" devices 1 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="fff5", RUN+="usb_modeswitch '/%k'" - -# ZTE "fff" devices 2 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="fff6", RUN+="usb_modeswitch '/%k'" - -# BandRich BandLuxe C100, C120, C170, C270, C3xx, C508 -ATTR{idVendor}=="1a8d", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# BandRich BandLuxe C339 -ATTR{idVendor}=="1a8d", ATTR{idProduct}=="2000", RUN+="usb_modeswitch '/%k'" - -# Hummer DTM5731, Aircard 901 -ATTR{idVendor}=="1ab7", ATTR{idProduct}=="5700", RUN+="usb_modeswitch '/%k'" - -# EpiValley SEC-7089 (featured by Alegro and Starcomms / iZAP) -ATTR{idVendor}=="1b7d", ATTR{idProduct}=="0700", RUN+="usb_modeswitch '/%k'" - -# ETCOM E300 -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="000f", RUN+="usb_modeswitch '/%k'" - -# Alcatel OT-X080C -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="00ca", RUN+="usb_modeswitch '/%k'" - -# Haier EVDO Rev. A -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="011f", RUN+="usb_modeswitch '/%k'" - -# Alcatel X602D -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="022c", RUN+="usb_modeswitch '/%k'" - -# Yota 4G LTE W8 -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="025e", RUN+="usb_modeswitch '/%k'" - -# Alcatel X200/X200L/X060S/L100V, Archos G9 3G Key -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Alcatel OT-X220D, L100V -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="f017", RUN+="usb_modeswitch '/%k'" - -# Alcatel OT X220L -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="f052", RUN+="usb_modeswitch '/%k'" - -# Alcatel One Touch X020 -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="1001", RUN+="usb_modeswitch '/%k'" - -# TU930, IVIO IV-2010u -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="6000", RUN+="usb_modeswitch '/%k'" - -# Omega WL-72B ("Vibe 3G") -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="6061", RUN+="usb_modeswitch '/%k'" - -# Emobile D12LC -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9101", RUN+="usb_modeswitch '/%k'" - -# MyWave SW006 Sport Phone/Modem Combination -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9200", RUN+="usb_modeswitch '/%k'" - -# Emobile D21LC -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9401", RUN+="usb_modeswitch '/%k'" - -# Longcheer SU9800 -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9800", RUN+="usb_modeswitch '/%k'" - -# Telewell TW-3G HSPA+, FS01BU 3G, SmartBro WM66E -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="98ff", RUN+="usb_modeswitch '/%k'" - -# XS Stick W100 (Omega) -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9bfe", RUN+="usb_modeswitch '/%k'" - -# Prolink PCM100 -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9d00", RUN+="usb_modeswitch '/%k'" - -# BSNL Capitel -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9e00", RUN+="usb_modeswitch '/%k'" - -# Explay Slim -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9e08", RUN+="usb_modeswitch '/%k'" - -# Longcheer/Longsoon (aka Omega Technology) devices, MobiData MBD-200HU and others -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Micromax MMX400R / 4G Systems XSBOXGO -ATTR{idVendor}=="1c9e", ATTR{idProduct}=="f010", RUN+="usb_modeswitch '/%k'" - -# TechFaith BSNL Capitel -ATTR{idVendor}=="1d09", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# Aiko 81D -ATTR{idVendor}=="1d09", ATTR{idProduct}=="1021", RUN+="usb_modeswitch '/%k'" - -# TechFaith FlyingLARK46 -ATTR{idVendor}=="1d09", ATTR{idProduct}=="1025", RUN+="usb_modeswitch '/%k'" - -# Qisda H21 Flying Beetle -ATTR{idVendor}=="1da5", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Wisue W340 -ATTR{idVendor}=="1dbc", ATTR{idProduct}=="0669", RUN+="usb_modeswitch '/%k'" - -# Solomon S3Gm-660 -ATTR{idVendor}=="1dd6", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# Philips PicoPix 1020 Projector -ATTR{idVendor}=="1de1", ATTR{idProduct}=="1101", RUN+="usb_modeswitch '/%k'" - -# Option iCON 210, PROLiNK PHS100 + PH300, Hyundai MB-810, A-Link 3GU -ATTR{idVendor}=="1e0e", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# 3GO 3GO11 HSUPA -ATTR{idVendor}=="1e89", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# AirPlus MCD-800 -ATTR{idVendor}=="1edf", ATTR{idProduct}=="6003", RUN+="usb_modeswitch '/%k'" - -# Onda MV815U -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0003", RUN+="usb_modeswitch '/%k'" - -# Onda POM1051 -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0007", RUN+="usb_modeswitch '/%k'" - -# Onda MW833UP -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0009", RUN+="usb_modeswitch '/%k'" - -# Onda MW833UP + MW835UP -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0013", RUN+="usb_modeswitch '/%k'" - -# Onda MO835UP -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0018", RUN+="usb_modeswitch '/%k'" - -# Onda MW836UP-K -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0040", RUN+="usb_modeswitch '/%k'" - -# Onda MDC655 -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0045", RUN+="usb_modeswitch '/%k'" - -# Onda MT655 -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0048", RUN+="usb_modeswitch '/%k'" - -# Onda MDC655 -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="004a", RUN+="usb_modeswitch '/%k'" - -# Onda MDC655 Variant -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="004f", RUN+="usb_modeswitch '/%k'" - -# Onda MW875UP -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0054", RUN+="usb_modeswitch '/%k'" - -# Onda MSA 14.4 (TIM Brasil) -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0060", RUN+="usb_modeswitch '/%k'" - -# Onda TM201, CM201 -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0063", RUN+="usb_modeswitch '/%k'" - -# Onda WM301 -ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0068", RUN+="usb_modeswitch '/%k'" - -# Cricket A600 -ATTR{idVendor}=="1f28", ATTR{idProduct}=="0021", RUN+="usb_modeswitch '/%k'" - -# Franklin Wireless U210 (Variant) -ATTR{idVendor}=="1fac", ATTR{idProduct}=="0032", RUN+="usb_modeswitch '/%k'" - -# Franklin Wireless U210 -ATTR{idVendor}=="1fac", ATTR{idProduct}=="0130", RUN+="usb_modeswitch '/%k'" - -# Franklin Wireless U600 -ATTR{idVendor}=="1fac", ATTR{idProduct}=="0150", RUN+="usb_modeswitch '/%k'" - -# Franklin Wireless U600 -ATTR{idVendor}=="1fac", ATTR{idProduct}=="0151", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-157 B1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="00a6", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-157 C1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="00a7", RUN+="usb_modeswitch '/%k'" - -# D-Link DWP-157 C1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="7600", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-221 -ATTR{idVendor}=="2001", ATTR{idProduct}=="98ff", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-221 B1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a401", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-156 A8, DWP-157 B1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a403", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-167 A1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a405", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-221 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a406", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-157 C1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a407", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-156 A8 (Myanmar) -ATTR{idVendor}=="2001", ATTR{idProduct}=="a40a", RUN+="usb_modeswitch '/%k'" - -# D-Link DWR-910 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a40d", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-156 A7 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a706", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-157 B1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a707", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-158 D1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a708", RUN+="usb_modeswitch '/%k'" - -# D-Link DWR-510 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a805", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-157 A1 -ATTR{idVendor}=="2001", ATTR{idProduct}=="a809", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-156 (Variant) -ATTR{idVendor}=="2001", ATTR{idProduct}=="a80b", RUN+="usb_modeswitch '/%k'" - -# D-Link DWM-222 -ATTR{idVendor}=="2001", ATTR{idProduct}=="ab00", RUN+="usb_modeswitch '/%k'" - -# Venus VT-18 -ATTR{idVendor}=="2015", ATTR{idProduct}=="0001", RUN+="usb_modeswitch '/%k'" - -# Haier CE682 (EVDO) -ATTR{idVendor}=="201e", ATTR{idProduct}=="1023", RUN+="usb_modeswitch '/%k'" - -# Haier CE 100 -ATTR{idVendor}=="201e", ATTR{idProduct}=="2009", RUN+="usb_modeswitch '/%k'" - -# Mediatek MT6229, Micromax MMX 377G, Olicard 300 -ATTR{idVendor}=="2020", ATTR{idProduct}=="0002", RUN+="usb_modeswitch '/%k'" - -# SpeedUp SU-8000 and others -ATTR{idVendor}=="2020", ATTR{idProduct}=="f00e", RUN+="usb_modeswitch '/%k'" - -# SpeedUp SU-8000U -ATTR{idVendor}=="2020", ATTR{idProduct}=="f00f", RUN+="usb_modeswitch '/%k'" - -# Changhong CH690, D-Link DWM-163 + DWM-168 -ATTR{idVendor}=="2077", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# Telenet 3G dongle (T&W WU160), Netgear AC327U and others -ATTR{idVendor}=="2077", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# BM WM78 -ATTR{idVendor}=="20a6", ATTR{idProduct}=="f00a", RUN+="usb_modeswitch '/%k'" - -# Intex 3.5G -ATTR{idVendor}=="20a6", ATTR{idProduct}=="f00e", RUN+="usb_modeswitch '/%k'" - -# Tlaytech TEU800 -ATTR{idVendor}=="20b9", ATTR{idProduct}=="1682", RUN+="usb_modeswitch '/%k'" - -# StrongRising (China Telcom), Air FlexiNet -ATTR{idVendor}=="21f5", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# StrongRising STD808 -ATTR{idVendor}=="21f5", ATTR{idProduct}=="3010", RUN+="usb_modeswitch '/%k'" - -# Viettel VT100 -ATTR{idVendor}=="2262", ATTR{idProduct}=="0001", RUN+="usb_modeswitch '/%k'" - -# WeTelecom WM-D200 -ATTR{idVendor}=="22de", ATTR{idProduct}=="6801", RUN+="usb_modeswitch '/%k'" - -# WeTelecom WM-D200A -ATTR{idVendor}=="22de", ATTR{idProduct}=="6802", RUN+="usb_modeswitch '/%k'" - -# WeTelecom WM-D300 -ATTR{idVendor}=="22de", ATTR{idProduct}=="6803", RUN+="usb_modeswitch '/%k'" - -# Tata Photon+, Olive VME102 -ATTR{idVendor}=="22f4", ATTR{idProduct}=="0021", RUN+="usb_modeswitch '/%k'" - -# Linktop LW272/LW273 (BSNL Teracom) -ATTR{idVendor}=="230d", ATTR{idProduct}=="0001", RUN+="usb_modeswitch '/%k'" - -# Linktop LW272/LW273 (BSNL Teracom) -ATTR{idVendor}=="230d", ATTR{idProduct}=="0003", RUN+="usb_modeswitch '/%k'" - -# Visiontek 82GH 3G -ATTR{idVendor}=="230d", ATTR{idProduct}=="0007", RUN+="usb_modeswitch '/%k'" - -# Zoom 3G -ATTR{idVendor}=="230d", ATTR{idProduct}=="000b", RUN+="usb_modeswitch '/%k'" - -# Zoom 3G -ATTR{idVendor}=="230d", ATTR{idProduct}=="000c", RUN+="usb_modeswitch '/%k'" - -# Intex Speed 3G v7.2 -ATTR{idVendor}=="230d", ATTR{idProduct}=="000d", RUN+="usb_modeswitch '/%k'" - -# Linktop LW272/LW273 -ATTR{idVendor}=="230d", ATTR{idProduct}=="0101", RUN+="usb_modeswitch '/%k'" - -# Teracom LW272 -ATTR{idVendor}=="230d", ATTR{idProduct}=="0103", RUN+="usb_modeswitch '/%k'" - -# TP-Link MA180 -ATTR{idVendor}=="2357", ATTR{idProduct}=="0200", RUN+="usb_modeswitch '/%k'" - -# TP-Link MA260 -ATTR{idVendor}=="2357", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '/%k'" - -# Titan 3.5G -ATTR{idVendor}=="23a2", ATTR{idProduct}=="1010", RUN+="usb_modeswitch '/%k'" - -# Unknown devices -ATTR{idVendor}=="257a", ATTR{idProduct}=="a000", RUN+="usb_modeswitch '/%k'" - -# Unknown devices -ATTR{idVendor}=="257a", ATTR{idProduct}=="b000", RUN+="usb_modeswitch '/%k'" - -# Unknown devices -ATTR{idVendor}=="257a", ATTR{idProduct}=="c000", RUN+="usb_modeswitch '/%k'" - -# Unknown devices -ATTR{idVendor}=="257a", ATTR{idProduct}=="d000", RUN+="usb_modeswitch '/%k'" - -# BlueLink BL-EV08C -ATTR{idVendor}=="6000", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" - -# Exiss Mobile E-190 series (made by C-motech) -ATTR{idVendor}=="8888", ATTR{idProduct}=="6500", RUN+="usb_modeswitch '/%k'" - -# Aiko 81D, fw with wrong vendor ID -ATTR{idVendor}=="ed09", ATTR{idProduct}=="1021", RUN+="usb_modeswitch '/%k'" - -LABEL="modeswitch_rules_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/50-firmware.rules b/linux/rootfs/board/usr/lib/udev/rules.d/50-firmware.rules deleted file mode 100644 index f7a08ce95e..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/50-firmware.rules +++ /dev/null @@ -1,3 +0,0 @@ -# stub for immediately telling the kernel that userspace firmware loading -# failed; necessary to avoid long timeouts with CONFIG_FW_LOADER_USER_HELPER=y -SUBSYSTEM=="firmware", ACTION=="add", ATTR{loading}="-1" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/50-udev-default.rules b/linux/rootfs/board/usr/lib/udev/rules.d/50-udev-default.rules deleted file mode 100644 index e9eeb8518e..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/50-udev-default.rules +++ /dev/null @@ -1,77 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# run a command on remove events -ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}" -ACTION=="remove", GOTO="default_end" - -SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" - -# select "system RTC" or just use the first one -SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc" -SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100" - -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" -SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" -ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" - -ACTION!="add", GOTO="default_end" - -SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666" -SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666" -SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620" -SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620" -SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620" -SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620" -SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty" -KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout" - -SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" - -SUBSYSTEM=="input", GROUP="input" -SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664" - -SUBSYSTEM=="video4linux", GROUP="video" -SUBSYSTEM=="graphics", GROUP="video" -SUBSYSTEM=="drm", GROUP="video" -SUBSYSTEM=="dvb", GROUP="video" - -SUBSYSTEM=="sound", GROUP="audio", \ - OPTIONS+="static_node=snd/seq", OPTIONS+="static_node=snd/timer" - -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664" - -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", GROUP="video" -SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", GROUP="video" -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", GROUP="video" -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", GROUP="video" - -KERNEL=="parport[0-9]*", GROUP="lp" -SUBSYSTEM=="printer", KERNEL=="lp*", GROUP="lp" -SUBSYSTEM=="ppdev", GROUP="lp" -KERNEL=="lp[0-9]*", GROUP="lp" -KERNEL=="irlpt[0-9]*", GROUP="lp" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp" - -SUBSYSTEM=="block", GROUP="disk" -SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="cdrom" -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom" -KERNEL=="sch[0-9]*", GROUP="cdrom" -KERNEL=="pktcdvd[0-9]*", GROUP="cdrom" -KERNEL=="pktcdvd", GROUP="cdrom" - -SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape" -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk" -KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk" -KERNEL=="loop-control", GROUP="disk", OPTIONS+="static_node=loop-control" -KERNEL=="btrfs-control", GROUP="disk" -KERNEL=="rawctl", GROUP="disk" -SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk" -SUBSYSTEM=="aoe", GROUP="disk", MODE="0220" -SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440" - -KERNEL=="rfkill", MODE="0664" -KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun" - -KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" - -LABEL="default_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/55-dm.rules b/linux/rootfs/board/usr/lib/udev/rules.d/55-dm.rules deleted file mode 100644 index 019c3af7f6..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/55-dm.rules +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (C) 2009 Red Hat, Inc. All rights reserved. -# -# This file is part of LVM2. - -# Udev rules for device-mapper devices. -# -# These rules create a DM control node in /dev/mapper directory. -# The rules also create nodes named dm-x (x is a number) in /dev -# directory and symlinks to these nodes with names given by -# the actual DM names. Some udev environment variables are set -# for use in later rules: -# DM_NAME - actual DM device's name -# DM_UUID - UUID set for DM device (blank if not specified) -# DM_SUSPENDED - suspended state of DM device (0 or 1) -# -# These rules cover only basic device-mapper functionality in udev. -# -# Various DM subsystems may contain further subsystem-specific rules -# in 11-dm-.rules which should be installed together -# with the DM subsystem and which extend these basic rules. -# For example: -# 11-dm-lvm.rules for LVM subsystem -# 11-dm-mpath.rules for multipath subsystem (since version 0.6.0, recommended!) -# -# Even more specific rules may be required by subsystems so always -# check subsystem's upstream repository for recent set of rules. -# Also, keep in mind that recent rules may also require recent -# subsystem-specific binaries. - -KERNEL=="device-mapper", NAME="mapper/control" - -# Decode udev control flags and set environment variables appropriately. -# These flags are encoded in DM_COOKIE variable that was introduced in -# kernel version 2.6.31. Therefore, we can use this feature with -# kernels >= 2.6.31 only. -ENV{DM_COOKIE}=="?*", IMPORT{program}="/sbin/dmsetup udevflags $env{DM_COOKIE}" -ENV{DM_COOKIE}=="?*", RUN+="/sbin/dmsetup udevcomplete $env{DM_COOKIE}" - -SUBSYSTEM!="block", GOTO="dm_end" -KERNEL!="dm-[0-9]*", GOTO="dm_end" - -# Device created, major and minor number assigned - "add" event generated. -# Table loaded - no event generated. -# Device resumed (or renamed) - "change" event generated. -# Device removed - "remove" event generated. -# -# The dm-X nodes are always created, even on "add" event, we can't suppress -# that (the node is created even earlier with devtmpfs). All the symlinks -# (e.g. /dev/mapper) are created in right time after a device has its table -# loaded and is properly resumed. For this reason, direct use of dm-X nodes -# is not recommended. -ACTION!="add|change", GOTO="dm_end" - -# Rule out easy-to-detect inappropriate events first. -ENV{DISK_RO}=="1", GOTO="dm_disable" - -# There is no cookie set nor any flags encoded in events not originating -# in libdevmapper so we need to detect this and try to behave correctly. -# For such spurious events, regenerate all flags from current udev database content -# (this information would normally be inaccessible for spurious ADD and CHANGE events). -ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}="1", GOTO="dm_flags_done" -IMPORT{db}="DM_UDEV_DISABLE_DM_RULES_FLAG" -IMPORT{db}="DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG" -IMPORT{db}="DM_UDEV_DISABLE_DISK_RULES_FLAG" -IMPORT{db}="DM_UDEV_DISABLE_OTHER_RULES_FLAG" -IMPORT{db}="DM_UDEV_LOW_PRIORITY_FLAG" -IMPORT{db}="DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG" -IMPORT{db}="DM_UDEV_PRIMARY_SOURCE_FLAG" -IMPORT{db}="DM_UDEV_FLAG7" -IMPORT{db}="DM_UDEV_RULES" -LABEL="dm_flags_done" - -# Normally, we operate on "change" events. But when coldplugging, there's an -# "add" event present. We have to recognize this and do our actions in this -# particular situation, too. Also, we don't want the nodes to be created -# prematurely on "add" events while not coldplugging. We check -# DM_UDEV_PRIMARY_SOURCE_FLAG to see if the device was activated correctly -# before and if not, we ignore the "add" event totally. This way we can support -# udev triggers generating "add" events (e.g. "udevadm trigger --action=add" or -# "echo add > /sys/block//uevent"). The trigger with "add" event is -# also used at boot to reevaluate udev rules for all existing devices activated -# before (e.g. in initrd). If udev is used in initrd, we require the udev init -# script to not remove the existing udev database so we can reuse the information -# stored at the time of device activation in the initrd. -ACTION!="add", GOTO="dm_no_coldplug" -ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", GOTO="dm_disable" -ENV{DM_ACTIVATION}="1" -LABEL="dm_no_coldplug" - -# Putting it together, following table is used to recognize genuine and spurious events. -# N.B. Spurious events are generated based on use of the WATCH udev -# rule or by triggering an event manually by "udevadm trigger" call -# or by "echo > /sys/block/dm-X/uevent". -# -# EVENT DM_UDEV_PRIMARY_SOURCE_FLAG DM_ACTIVATION -# ====================================================================== -# add event (genuine) 0 0 -# change event (genuine) 1 1 -# add event (spurious) -# |_ dev still not active 0 0 -# \_ dev already active 1 1 -# change event (spurious) -# |_ dev still not active 0 0 -# \_ dev already active 1 0 - -# "dm" sysfs subdirectory is available in newer versions of DM -# only (kernels >= 2.6.29). We have to check for its existence -# and use dmsetup tool instead to get the DM name, uuid and -# suspended state if the "dm" subdirectory is not present. -# The "suspended" item was added even later (kernels >= 2.6.31), -# so we also have to call dmsetup if the kernel version used -# is in between these releases. -TEST=="dm", ENV{DM_NAME}="$attr{dm/name}", ENV{DM_UUID}="$attr{dm/uuid}", ENV{DM_SUSPENDED}="$attr{dm/suspended}" -TEST!="dm", IMPORT{program}="/sbin/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o name,uuid,suspended" -ENV{DM_SUSPENDED}!="?*", IMPORT{program}="/sbin/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o suspended" - -# dmsetup tool provides suspended state information in textual -# form with values "Suspended"/"Active". We translate it to -# 0/1 respectively to be consistent with sysfs values. -ENV{DM_SUSPENDED}=="Active", ENV{DM_SUSPENDED}="0" -ENV{DM_SUSPENDED}=="Suspended", ENV{DM_SUSPENDED}="1" - -# This variable provides a reliable way to check that device-mapper -# rules were installed. It means that all needed variables are set -# by these rules directly so there's no need to acquire them again -# later. -ENV{DM_UDEV_RULES}="1" - -ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", SYMLINK+="mapper/$env{DM_NAME}" - -# Avoid processing and scanning a DM device in the other (foreign) -# rules if it is in suspended state. However, we still keep 'disk' -# and 'DM subsystem' related rules enabled in this case. -ENV{DM_SUSPENDED}=="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" - -GOTO="dm_end" - -LABEL="dm_disable" -ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}="1" -ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1" -ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" -OPTIONS:="nowatch" - -LABEL="dm_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-block.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-block.rules deleted file mode 100644 index 42c75974a5..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-block.rules +++ /dev/null @@ -1,11 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# enable in-kernel media-presence polling -ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_poll_msecs}=="0", \ - ATTR{parameters/events_dfl_poll_msecs}="2000" - -# forward scsi device event to corresponding block device -ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change" - -# watch metadata changes, caused by tools closing the device node which was opened for writing -ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*|xvd*|pmem*", OPTIONS+="watch" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-cdrom_id.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-cdrom_id.rules deleted file mode 100644 index 56fe7c9cad..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-cdrom_id.rules +++ /dev/null @@ -1,25 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="cdrom_end" -SUBSYSTEM!="block", GOTO="cdrom_end" -KERNEL!="sr[0-9]*|vdisk*|xvd*", GOTO="cdrom_end" -ENV{DEVTYPE}!="disk", GOTO="cdrom_end" - -# unconditionally tag device as CDROM -KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1" - -# media eject button pressed -ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end" - -# import device and media properties and lock tray to -# enable the receiving of media eject button events -IMPORT{program}="cdrom_id --lock-media $devnode" - -# ejecting a CD does not remove the device node, so mark the systemd device -# unit as inactive while there is no medium; this automatically cleans up of -# stale mounts after ejecting -ENV{DISK_MEDIA_CHANGE}=="?*", ENV{ID_CDROM_MEDIA}!="?*", ENV{SYSTEMD_READY}="0" - -KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100" - -LABEL="cdrom_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-crda.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-crda.rules deleted file mode 100644 index c28a2c9373..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-crda.rules +++ /dev/null @@ -1 +0,0 @@ -SUBSYSTEM=="ieee80211", ACTION=="add", RUN+="/lib/crda/setregdomain" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-drm.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-drm.rules deleted file mode 100644 index 1ed3e445f2..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-drm.rules +++ /dev/null @@ -1,3 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-evdev.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-evdev.rules deleted file mode 100644 index ade7e7f646..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-evdev.rules +++ /dev/null @@ -1,19 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="evdev_end" -KERNEL!="event*", GOTO="evdev_end" - -# skip later rules when we find something for this input device -IMPORT{builtin}="hwdb --subsystem=input --lookup-prefix=evdev:", \ - RUN{builtin}+="keyboard", GOTO="evdev_end" - -# AT keyboard matching by the machine's DMI data -ENV{ID_INPUT_KEY}=="?*", DRIVERS=="atkbd", \ - IMPORT{builtin}="hwdb 'evdev:atkbd:$attr{[dmi/id]modalias}'", \ - RUN{builtin}+="keyboard", GOTO="evdev_end" - -# device matching the input device name and the machine's DMI data -KERNELS=="input*", IMPORT{builtin}="hwdb 'evdev:name:$attr{name}:$attr{[dmi/id]modalias}'", \ - RUN{builtin}+="keyboard", GOTO="evdev_end" - -LABEL="evdev_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-alsa.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-alsa.rules deleted file mode 100644 index 8154e2dbb5..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-alsa.rules +++ /dev/null @@ -1,14 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="persistent_alsa_end" -SUBSYSTEM!="sound", GOTO="persistent_alsa_end" -KERNEL!="controlC[0-9]*", GOTO="persistent_alsa_end" - -SUBSYSTEMS=="usb", ENV{ID_MODEL}=="", IMPORT{builtin}="usb_id" -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="?*", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_USB_INTERFACE_NUM}" -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}" - -IMPORT{builtin}="path_id" -ENV{ID_PATH}=="?*", SYMLINK+="snd/by-path/$env{ID_PATH}" - -LABEL="persistent_alsa_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-input.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-input.rules deleted file mode 100644 index 607144bf8a..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-input.rules +++ /dev/null @@ -1,40 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="persistent_input_end" -SUBSYSTEM!="input", GOTO="persistent_input_end" -SUBSYSTEMS=="bluetooth", ENV{ID_BUS}="bluetooth", GOTO="persistent_input_end" -SUBSYSTEMS=="rmi4", ENV{ID_BUS}="rmi", GOTO="persistent_input_end" -SUBSYSTEMS=="serio", ENV{ID_BUS}="i8042", GOTO="persistent_input_end" - -SUBSYSTEMS=="usb", ENV{ID_BUS}=="", IMPORT{builtin}="usb_id" - -# determine class name for persistent symlinks -ENV{ID_INPUT_KEYBOARD}=="?*", ENV{.INPUT_CLASS}="kbd" -ENV{ID_INPUT_MOUSE}=="?*", ENV{.INPUT_CLASS}="mouse" -ENV{ID_INPUT_TOUCHPAD}=="?*", ENV{.INPUT_CLASS}="mouse" -ENV{ID_INPUT_TABLET}=="?*", ENV{.INPUT_CLASS}="mouse" -ENV{ID_INPUT_JOYSTICK}=="?*", ENV{.INPUT_CLASS}="joystick" -DRIVERS=="pcspkr", ENV{.INPUT_CLASS}="spkr" -ATTRS{name}=="*dvb*|*DVB*|* IR *", ENV{.INPUT_CLASS}="ir" - -# fill empty serial number -ENV{.INPUT_CLASS}=="?*", ENV{ID_SERIAL}=="", ENV{ID_SERIAL}="noserial" - -# by-id links -KERNEL=="mouse*|js*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="|00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{.INPUT_CLASS}" -KERNEL=="mouse*|js*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="?*", ATTRS{bInterfaceNumber}!="00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$attr{bInterfaceNumber}-$env{.INPUT_CLASS}" -KERNEL=="event*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="|00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-$env{.INPUT_CLASS}" -KERNEL=="event*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="?*", ATTRS{bInterfaceNumber}!="00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$attr{bInterfaceNumber}-event-$env{.INPUT_CLASS}" -# allow empty class for USB devices, by appending the interface number -SUBSYSTEMS=="usb", ENV{ID_BUS}=="?*", KERNEL=="event*", ENV{.INPUT_CLASS}=="", ATTRS{bInterfaceNumber}=="?*", \ - SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-if$attr{bInterfaceNumber}" - -# by-path -SUBSYSTEMS=="pci|usb|platform|acpi", IMPORT{builtin}="path_id" -ENV{ID_PATH}=="?*", KERNEL=="mouse*|js*", ENV{.INPUT_CLASS}=="?*", SYMLINK+="input/by-path/$env{ID_PATH}-$env{.INPUT_CLASS}" -ENV{ID_PATH}=="?*", KERNEL=="event*", ENV{.INPUT_CLASS}=="?*", SYMLINK+="input/by-path/$env{ID_PATH}-event-$env{.INPUT_CLASS}" -# allow empty class for platform and usb devices; platform supports only a single interface that way -SUBSYSTEMS=="usb|platform", ENV{ID_PATH}=="?*", KERNEL=="event*", ENV{.INPUT_CLASS}=="", \ - SYMLINK+="input/by-path/$env{ID_PATH}-event" - -LABEL="persistent_input_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage-dm.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage-dm.rules deleted file mode 100644 index 3fe3b6ce0d..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage-dm.rules +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2009 Red Hat, Inc. All rights reserved. -# -# This file is part of LVM2. - -# Udev rules for device-mapper devices. -# -# These rules create symlinks in /dev/disk directory. -# Symlinks that depend on probing filesystem type, -# label and uuid are created only if the device is not -# suspended. - -# "add" event is processed on coldplug only! -ACTION!="add|change", GOTO="dm_end" -ENV{DM_UDEV_RULES}!="?*", GOTO="dm_end" -ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}=="1", GOTO="dm_end" - -SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}" -ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}" - -ENV{DM_SUSPENDED}=="1", GOTO="dm_end" -ENV{DM_NOSCAN}=="1", GOTO="dm_watch" - -IMPORT{builtin}="blkid" -ENV{DM_UDEV_LOW_PRIORITY_FLAG}=="1", OPTIONS="link_priority=-100" -ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" -ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" - -# Add inotify watch to track changes on this device. -# Using the watch rule is not optimal - it generates a lot of spurious -# and useless events whenever the device opened for read-write is closed. -# The best would be to generete the event directly in the tool changing -# relevant information so only relevant events will be processed -# (like creating a filesystem, changing filesystem label etc.). -# -# But let's use this until we have something better... -LABEL="dm_watch" -OPTIONS+="watch" - -LABEL="dm_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage-tape.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage-tape.rules deleted file mode 100644 index b604864ee8..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage-tape.rules +++ /dev/null @@ -1,26 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# persistent storage links: /dev/tape/{by-id,by-path} - -ACTION=="remove", GOTO="persistent_storage_tape_end" -ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_tape_end" - -# type 8 devices are "Medium Changers" -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{program}="scsi_id --sg-version=3 --export --whitelisted -d $devnode", \ - SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL}" - -SUBSYSTEM!="scsi_tape", GOTO="persistent_storage_tape_end" - -KERNEL=="st*[0-9]|nst*[0-9]", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394" -KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" -KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", KERNELS=="[0-9]*:*[0-9]", ENV{.BSG_DEV}="$root/bsg/$id" -KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --whitelisted --export --device=$env{.BSG_DEV}", ENV{ID_BUS}="scsi" -KERNEL=="st*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}" -KERNEL=="nst*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}-nst" - -# by-path (parent device path) -KERNEL=="st*[0-9]|nst*[0-9]", IMPORT{builtin}="path_id" -KERNEL=="st*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="tape/by-path/$env{ID_PATH}" -KERNEL=="nst*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="tape/by-path/$env{ID_PATH}-nst" - -LABEL="persistent_storage_tape_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage.rules deleted file mode 100644 index baf341dd6c..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-storage.rules +++ /dev/null @@ -1,95 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path} -# scheme based on "Linux persistent device names", 2004, Hannes Reinecke - -ACTION=="remove", GOTO="persistent_storage_end" -ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_end" - -SUBSYSTEM!="block", GOTO="persistent_storage_end" -KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|scm*|pmem*|nbd*", GOTO="persistent_storage_end" - -# ignore partitions that span the entire disk -TEST=="whole_disk", GOTO="persistent_storage_end" - -# for partitions import parent information -ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*" - -# NVMe -KERNEL=="nvme*[0-9]n*[0-9]", ATTR{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{wwid}" -KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{wwid}-part%n" - -KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}" -KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{model}=="?*", ENV{ID_SERIAL_SHORT}=="?*", ENV{ID_SERIAL}="$attr{model}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}" - -KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}" -KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{model}=="?*", ENV{ID_SERIAL_SHORT}=="?*", ENV{ID_SERIAL}="$attr{model}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}-part%n" - -# virtio-blk -KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}" -KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n" - -# ATA -KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode" - -# ATAPI devices (SPC-3 or later) -KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $devnode" - -# Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures) -KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode" - -# Fall back usb_id for USB devices -KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" - -# SCSI devices -KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi" -KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="cciss" -KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" -KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" - -# FireWire -KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}" -KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n" - -# MMC -KERNEL=="mmcblk[0-9]", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ATTRS{serial}=="?*", \ - ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}" -KERNEL=="mmcblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}-part%n" - -# Memstick -KERNEL=="msblk[0-9]|mspblk[0-9]", SUBSYSTEMS=="memstick", ATTRS{name}=="?*", ATTRS{serial}=="?*", \ - ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}" -KERNEL=="msblk[0-9]p[0-9]|mspblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}-part%n" - -# by-path -ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id" -ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}" -ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n" - -# legacy virtio-pci by-path links (deprecated) -KERNEL=="vd*[!0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}" -KERNEL=="vd*[0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}-part%n" - -# probe filesystem metadata of optical drives which have a media inserted -KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", \ - IMPORT{builtin}="blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}" -# single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET -KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \ - IMPORT{builtin}="blkid --noraid" - -# probe filesystem metadata of disks -KERNEL!="sr*", IMPORT{builtin}="blkid" - -# by-label/by-uuid links (filesystem metadata) -ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" -ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" - -# by-id (World Wide Name) -ENV{DEVTYPE}=="disk", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}" -ENV{DEVTYPE}=="partition", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}-part%n" - -# by-partlabel/by-partuuid links (partition metadata) -ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}" -ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK+="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}" - -LABEL="persistent_storage_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-v4l.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-v4l.rules deleted file mode 100644 index 93c5ee8c27..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-persistent-v4l.rules +++ /dev/null @@ -1,20 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="persistent_v4l_end" -SUBSYSTEM!="video4linux", GOTO="persistent_v4l_end" -ENV{MAJOR}=="", GOTO="persistent_v4l_end" - -IMPORT{program}="v4l_id $devnode" - -SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" -KERNEL=="video*", ENV{ID_SERIAL}=="?*", SYMLINK+="v4l/by-id/$env{ID_BUS}-$env{ID_SERIAL}-video-index$attr{index}" - -# check for valid "index" number -TEST!="index", GOTO="persistent_v4l_end" -ATTR{index}!="?*", GOTO="persistent_v4l_end" - -IMPORT{builtin}="path_id" -ENV{ID_PATH}=="?*", KERNEL=="video*|vbi*", SYMLINK+="v4l/by-path/$env{ID_PATH}-video-index$attr{index}" -ENV{ID_PATH}=="?*", KERNEL=="audio*", SYMLINK+="v4l/by-path/$env{ID_PATH}-audio-index$attr{index}" - -LABEL="persistent_v4l_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-sensor.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-sensor.rules deleted file mode 100644 index 7ad2c36be3..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-sensor.rules +++ /dev/null @@ -1,18 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="sensor_end" - -# device matching the sensor's name and the machine's DMI data for IIO devices -SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="usb|i2c", \ - IMPORT{builtin}="hwdb 'sensor:modalias:$attr{modalias}:$attr{[dmi/id]modalias}'", \ - GOTO="sensor_end" - -SUBSYSTEM=="input", ENV{ID_INPUT_ACCELEROMETER}=="1", SUBSYSTEMS=="acpi", \ - IMPORT{builtin}="hwdb 'sensor:modalias:acpi:$attr{hid}:$attr{[dmi/id]modalias}'", \ - GOTO="sensor_end" - -SUBSYSTEM=="input", ENV{ID_INPUT_ACCELEROMETER}=="1", SUBSYSTEMS=="platform", \ - IMPORT{builtin}="hwdb 'sensor:modalias:platform:$id:$attr{[dmi/id]modalias}'", \ - GOTO="sensor_end" - -LABEL="sensor_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-serial.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-serial.rules deleted file mode 100644 index f303e27fd5..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-serial.rules +++ /dev/null @@ -1,26 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="serial_end" -SUBSYSTEM!="tty", GOTO="serial_end" - -SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" -SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci" -SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" - -# /dev/serial/by-path/, /dev/serial/by-id/ for USB devices -KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="serial_end" - -SUBSYSTEMS=="usb-serial", ENV{.ID_PORT}="$attr{port_number}" - -IMPORT{builtin}="path_id" -ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="serial/by-path/$env{ID_PATH}" -ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-path/$env{ID_PATH}-port$env{.ID_PORT}" - -IMPORT{builtin}="usb_id" -ENV{ID_SERIAL}=="", GOTO="serial_end" -SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACE_NUM}="$attr{bInterfaceNumber}" -ENV{ID_USB_INTERFACE_NUM}=="", GOTO="serial_end" -ENV{.ID_PORT}=="", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}" -ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}-port$env{.ID_PORT}" - -LABEL="serial_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/60-triggerhappy.rules b/linux/rootfs/board/usr/lib/udev/rules.d/60-triggerhappy.rules deleted file mode 100644 index 81d13cb1bd..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/60-triggerhappy.rules +++ /dev/null @@ -1,8 +0,0 @@ -## open new input devices and pass the file descriptor to the triggerhappy daemon -ACTION=="add", SUBSYSTEM=="input", \ - ATTRS{name}!="triggerhappy", \ - RUN+="/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev" -## add device exclusively -#ACTION=="add", SUBSYSTEM=="input", \ -# ATTRS{name}=="Nintendo Wiimote", \ -# RUN+="/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev --grab" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/64-btrfs.rules b/linux/rootfs/board/usr/lib/udev/rules.d/64-btrfs.rules deleted file mode 100644 index fe0100131e..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/64-btrfs.rules +++ /dev/null @@ -1,13 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="block", GOTO="btrfs_end" -ACTION=="remove", GOTO="btrfs_end" -ENV{ID_FS_TYPE}!="btrfs", GOTO="btrfs_end" - -# let the kernel know about this btrfs filesystem, and check if it is complete -IMPORT{builtin}="btrfs ready $devnode" - -# mark the device as not ready to be used by the system -ENV{ID_BTRFS_READY}=="0", ENV{SYSTEMD_READY}="0" - -LABEL="btrfs_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/69-libmtp.rules b/linux/rootfs/board/usr/lib/udev/rules.d/69-libmtp.rules deleted file mode 100644 index d80eeadce6..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/69-libmtp.rules +++ /dev/null @@ -1,2285 +0,0 @@ -# UDEV-style hotplug map for libmtp -# Put this file in /etc/udev/rules.d - -ACTION!="add", GOTO="libmtp_rules_end" -ENV{MAJOR}!="?*", GOTO="libmtp_rules_end" -SUBSYSTEM=="usb", GOTO="libmtp_usb_rules" -GOTO="libmtp_rules_end" - -LABEL="libmtp_usb_rules" - -# Some sensitive devices we surely don't wanna probe -# Color instruments -ATTR{idVendor}=="0670", GOTO="libmtp_rules_end" -ATTR{idVendor}=="0765", GOTO="libmtp_rules_end" -ATTR{idVendor}=="085c", GOTO="libmtp_rules_end" -ATTR{idVendor}=="0971", GOTO="libmtp_rules_end" -# Canon scanners that look like MTP devices (PID 0x22nn) -ATTR{idVendor}=="04a9", ATTR{idProduct}=="22*", GOTO="libmtp_rules_end" -# Canon digital camera (EOS 3D) that looks like MTP device (PID 0x3113) -ATTR{idVendor}=="04a9", ATTR{idProduct}=="3113", GOTO="libmtp_rules_end" -# Sensitive Atheros devices that look like MTP devices -ATTR{idVendor}=="0cf3", GOTO="libmtp_rules_end" -# Sensitive Atmel JTAG programmers -ATTR{idVendor}=="03eb", GOTO="libmtp_rules_end" -# Sensitive Philips device -ATTR{idVendor}=="0471", ATTR{idProduct}=="083f", GOTO="libmtp_rules_end" -# Creative ZEN Vision -ATTR{idVendor}=="041e", ATTR{idProduct}=="411f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative Portable Media Center -ATTR{idVendor}=="041e", ATTR{idProduct}=="4123", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Xtra (MTP mode) -ATTR{idVendor}=="041e", ATTR{idProduct}=="4128", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Dell DJ (2nd generation) -ATTR{idVendor}=="041e", ATTR{idProduct}=="412f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Micro (MTP mode) -ATTR{idVendor}=="041e", ATTR{idProduct}=="4130", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Touch (MTP mode) -ATTR{idVendor}=="041e", ATTR{idProduct}=="4131", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Dell Dell Pocket DJ (MTP mode) -ATTR{idVendor}=="041e", ATTR{idProduct}=="4132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN MicroPhoto (alternate version) -ATTR{idVendor}=="041e", ATTR{idProduct}=="4133", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Sleek (MTP mode) -ATTR{idVendor}=="041e", ATTR{idProduct}=="4137", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN MicroPhoto -ATTR{idVendor}=="041e", ATTR{idProduct}=="413c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Sleek Photo -ATTR{idVendor}=="041e", ATTR{idProduct}=="413d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Vision:M -ATTR{idVendor}=="041e", ATTR{idProduct}=="413e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN V -ATTR{idVendor}=="041e", ATTR{idProduct}=="4150", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Vision:M (DVP-HD0004) -ATTR{idVendor}=="041e", ATTR{idProduct}=="4151", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN V Plus -ATTR{idVendor}=="041e", ATTR{idProduct}=="4152", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Vision W -ATTR{idVendor}=="041e", ATTR{idProduct}=="4153", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN -ATTR{idVendor}=="041e", ATTR{idProduct}=="4157", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN V 2GB -ATTR{idVendor}=="041e", ATTR{idProduct}=="4158", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN Mozaic -ATTR{idVendor}=="041e", ATTR{idProduct}=="4161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN X-Fi -ATTR{idVendor}=="041e", ATTR{idProduct}=="4162", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Creative ZEN X-Fi 3 -ATTR{idVendor}=="041e", ATTR{idProduct}=="4169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZiiLABS Zii EGG -ATTR{idVendor}=="041e", ATTR{idProduct}=="6000", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-900 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="0409", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung I550W Phone -ATTR{idVendor}=="04e8", ATTR{idProduct}=="04a4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung Jet S8000 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="4f1f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YH-920 (501d) -ATTR{idVendor}=="04e8", ATTR{idProduct}=="501d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YH-920 (5022) -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5022", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YH-925GS -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5024", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YH-820 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="502e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YH-925(-GS) -ATTR{idVendor}=="04e8", ATTR{idProduct}=="502f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YH-J70J -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5033", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-Z5 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="503c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-T7J -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5047", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-U2J (YP-U2JXB/XAA) -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5054", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-F2J -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5057", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-K5 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="505a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-U3 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="507d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-T9 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="507f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-K3 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5081", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-P2 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5083", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-T10 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="508a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-S5 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="508b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-S3 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5091", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-U4 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5093", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-R1 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="510f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-Q1 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5115", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-M1 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5118", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-P3 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="511a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-Q2 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="511d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-U5 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5121", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-R0 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5125", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-R2 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="512e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-Q3 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5130", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YP-Z3 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5137", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900/Verizon Intensity/Fascinate -ATTR{idVendor}=="04e8", ATTR{idProduct}=="5a0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung M7600 Beat/GT-S8300T/SGH-F490/S8300 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6642", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung X830 Mobile Phone -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6702", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung U600 Mobile Phone -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6709", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung F250 Mobile Phone -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6727", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung Juke (SCH-U470) -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6734", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung GT-B2700 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6752", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung SAMSUNG Trance -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6763", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung GT-S8500 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6819", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung Galaxy models (MTP+ADB) -ATTR{idVendor}=="04e8", ATTR{idProduct}=="685c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung Galaxy models (MTP) -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung Galaxy models Kies mode -ATTR{idVendor}=="04e8", ATTR{idProduct}=="6877", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung Vibrant SGH-T959/Captivate/Media player mode -ATTR{idVendor}=="04e8", ATTR{idProduct}=="68a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung GT-B2710/Xcover 271 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="68af", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Samsung GT-S5230 -ATTR{idVendor}=="04e8", ATTR{idProduct}=="e20c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft/Intel Bandon Portable Media Center -ATTR{idVendor}=="045e", ATTR{idProduct}=="00c9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft Windows Phone -ATTR{idVendor}=="045e", ATTR{idProduct}=="04ec", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft Windows MTP Simulator -ATTR{idVendor}=="045e", ATTR{idProduct}=="0622", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft Zune HD -ATTR{idVendor}=="045e", ATTR{idProduct}=="063e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft Kin 1 -ATTR{idVendor}=="045e", ATTR{idProduct}=="0640", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft/Sharp/nVidia Kin TwoM -ATTR{idVendor}=="045e", ATTR{idProduct}=="0641", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft Zune -ATTR{idVendor}=="045e", ATTR{idProduct}=="0710", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft Lumia 950 XL Dual SIM (RM-1116) -ATTR{idVendor}=="045e", ATTR{idProduct}=="0a00", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Microsoft/HTC HTC 8S -ATTR{idVendor}=="045e", ATTR{idProduct}=="f0ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# JVC Alneo XA-HD500 -ATTR{idVendor}=="04f1", ATTR{idProduct}=="6105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Intex Aqua Fish -ATTR{idVendor}=="05c6", ATTR{idProduct}=="0a07", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips HDD6320/00 or HDD6330/17 -ATTR{idVendor}=="0471", ATTR{idProduct}=="014b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips HDD14XX,HDD1620 or HDD1630/17 -ATTR{idVendor}=="0471", ATTR{idProduct}=="014c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips HDD085/00 or HDD082/17 -ATTR{idVendor}=="0471", ATTR{idProduct}=="014d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear SA9200 -ATTR{idVendor}=="0471", ATTR{idProduct}=="014f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips SA1115/55 -ATTR{idVendor}=="0471", ATTR{idProduct}=="0164", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear Audio -ATTR{idVendor}=="0471", ATTR{idProduct}=="0165", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips Shoqbox -ATTR{idVendor}=="0471", ATTR{idProduct}=="0172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips PSA610 -ATTR{idVendor}=="0471", ATTR{idProduct}=="0181", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips HDD6320 -ATTR{idVendor}=="0471", ATTR{idProduct}=="01eb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear SA6014/SA6015/SA6024/SA6025/SA6044/SA6045 -ATTR{idVendor}=="0471", ATTR{idProduct}=="084e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear SA5145 -ATTR{idVendor}=="0471", ATTR{idProduct}=="0857", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips i908 -ATTR{idVendor}=="0471", ATTR{idProduct}=="190b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear SA6125/SA6145/SA6185 -ATTR{idVendor}=="0471", ATTR{idProduct}=="2002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear SA3345 -ATTR{idVendor}=="0471", ATTR{idProduct}=="2004", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips W6610 -ATTR{idVendor}=="0471", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips SA5285 -ATTR{idVendor}=="0471", ATTR{idProduct}=="2022", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear ViBE SA1VBE04 -ATTR{idVendor}=="0471", ATTR{idProduct}=="2075", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear Muse -ATTR{idVendor}=="0471", ATTR{idProduct}=="2077", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear ViBE SA1VBE04/08 -ATTR{idVendor}=="0471", ATTR{idProduct}=="207b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear Aria -ATTR{idVendor}=="0471", ATTR{idProduct}=="207c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear SA1VBE08KX/78 -ATTR{idVendor}=="0471", ATTR{idProduct}=="208e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear VIBE SA2VBE[08|16]K/02 -ATTR{idVendor}=="0471", ATTR{idProduct}=="20b7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear Ariaz -ATTR{idVendor}=="0471", ATTR{idProduct}=="20b9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear Vibe/02 -ATTR{idVendor}=="0471", ATTR{idProduct}=="20e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips GoGear Ariaz/97 -ATTR{idVendor}=="0471", ATTR{idProduct}=="2138", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips PI3900B2/58 -ATTR{idVendor}=="0471", ATTR{idProduct}=="2190", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Philips PSA235 -ATTR{idVendor}=="0471", ATTR{idProduct}=="7e01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A500 (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3325", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A500 (ID2) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3341", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A501 (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3344", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A501 (ID2) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3345", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A100 (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3348", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A100 (ID2) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3349", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A101 (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="334a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A700 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3378", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A200 (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="337c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A200 (ID2) -ATTR{idVendor}=="0502", ATTR{idProduct}=="337d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A510 (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3389", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A510 (ID2) -ATTR{idVendor}=="0502", ATTR{idProduct}=="338a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer S500 CloudMobile -ATTR{idVendor}=="0502", ATTR{idProduct}=="33aa", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer E350 Liquid Gallant Duo (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="33c3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer E350 Liquid Gallant Duo (ID2) -ATTR{idVendor}=="0502", ATTR{idProduct}=="33c4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A210 -ATTR{idVendor}=="0502", ATTR{idProduct}=="33cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia TAB A110 -ATTR{idVendor}=="0502", ATTR{idProduct}=="33d8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid Z120 MT65xx Android Phone -ATTR{idVendor}=="0502", ATTR{idProduct}=="3473", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid E2 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3514", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia A1-810 -ATTR{idVendor}=="0502", ATTR{idProduct}=="353c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid Z130 MT65xx Android Phone -ATTR{idVendor}=="0502", ATTR{idProduct}=="355f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia A3-A11 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3586", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid E3 -ATTR{idVendor}=="0502", ATTR{idProduct}=="35a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Z150 -ATTR{idVendor}=="0502", ATTR{idProduct}=="35e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid X1 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3609", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Z160 -ATTR{idVendor}=="0502", ATTR{idProduct}=="361d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia A1-840FHD -ATTR{idVendor}=="0502", ATTR{idProduct}=="362d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer E39 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3643", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer liquid e700 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3644", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer One 7 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3657", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Z200 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3683", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer A1-841 -ATTR{idVendor}=="0502", ATTR{idProduct}=="365e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid S56 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3725", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid Z220 (ID1) -ATTR{idVendor}=="0502", ATTR{idProduct}=="374f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid Z220 (ID2) -ATTR{idVendor}=="0502", ATTR{idProduct}=="3750", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid Z330 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3750", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid Z630 -ATTR{idVendor}=="0502", ATTR{idProduct}=="37ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Z530 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3822", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Z530 16GB -ATTR{idVendor}=="0502", ATTR{idProduct}=="3823", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Iconia One 10 -ATTR{idVendor}=="0502", ATTR{idProduct}=="3841", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acer Liquid Zest Plus -ATTR{idVendor}=="0502", ATTR{idProduct}=="38bb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa m230/m240 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7400", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa m200-tcc (MTP mode) -ATTR{idVendor}=="0781", ATTR{idProduct}=="7401", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa c150 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7410", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa e200/e250/e260/e270/e280 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7420", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa e260/e280 v2 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7422", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa m240/m250 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7430", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Clip -ATTR{idVendor}=="0781", ATTR{idProduct}=="7432", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Clip v2 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7434", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa c240/c250 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7450", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa c250 v2 -ATTR{idVendor}=="0781", ATTR{idProduct}=="7452", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Express -ATTR{idVendor}=="0781", ATTR{idProduct}=="7460", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Connect -ATTR{idVendor}=="0781", ATTR{idProduct}=="7480", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa View -ATTR{idVendor}=="0781", ATTR{idProduct}=="74b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Fuze -ATTR{idVendor}=="0781", ATTR{idProduct}=="74c0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Fuze v2 -ATTR{idVendor}=="0781", ATTR{idProduct}=="74c2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Clip+ -ATTR{idVendor}=="0781", ATTR{idProduct}=="74d0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Fuze+ -ATTR{idVendor}=="0781", ATTR{idProduct}=="74e0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SanDisk Sansa Clip Zip -ATTR{idVendor}=="0781", ATTR{idProduct}=="74e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver H300 Series MTP -ATTR{idVendor}=="1006", ATTR{idProduct}=="3004", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver Portable Media Center 1 -ATTR{idVendor}=="1006", ATTR{idProduct}=="4002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver Portable Media Center 2 -ATTR{idVendor}=="1006", ATTR{idProduct}=="4003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T7 Volcano -ATTR{idVendor}=="1042", ATTR{idProduct}=="1143", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver iFP-880 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T10 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1113", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T20 FM -ATTR{idVendor}=="4102", ATTR{idProduct}=="1114", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T20 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1115", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver U10 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1116", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T10b -ATTR{idVendor}=="4102", ATTR{idProduct}=="1117", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T20b -ATTR{idVendor}=="4102", ATTR{idProduct}=="1118", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T30 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1119", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T10 2GB -ATTR{idVendor}=="4102", ATTR{idProduct}=="1120", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver N12 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1122", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver Clix2 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1126", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver Clix -ATTR{idVendor}=="4102", ATTR{idProduct}=="112a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver X20 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T60 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1134", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver E100 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1141", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver E100 v2/Lplayer -ATTR{idVendor}=="4102", ATTR{idProduct}=="1142", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver Spinn -ATTR{idVendor}=="4102", ATTR{idProduct}=="1147", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver E50 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1151", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver E150 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1152", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver T5 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1153", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver E30 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver AK70 -ATTR{idVendor}=="4102", ATTR{idProduct}=="1200", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver H10 20GB -ATTR{idVendor}=="4102", ATTR{idProduct}=="2101", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver H10 5GB -ATTR{idVendor}=="4102", ATTR{idProduct}=="2102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver H10 5.6GB -ATTR{idVendor}=="4102", ATTR{idProduct}=="2105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Dell Inc DJ Itty -ATTR{idVendor}=="413c", ATTR{idProduct}=="4500", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Dell Inc Dell Streak 7 -ATTR{idVendor}=="413c", ATTR{idProduct}=="b10b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Dell Inc Dell Venue 7 inch -ATTR{idVendor}=="413c", ATTR{idProduct}=="b11a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Dell Inc Dell Venue 7 inch (2nd ID) -ATTR{idVendor}=="413c", ATTR{idProduct}=="b11b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat MEGF-40 -ATTR{idVendor}=="0930", ATTR{idProduct}=="0009", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat -ATTR{idVendor}=="0930", ATTR{idProduct}=="000c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat P20 -ATTR{idVendor}=="0930", ATTR{idProduct}=="000f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat S -ATTR{idVendor}=="0930", ATTR{idProduct}=="0010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat P10 -ATTR{idVendor}=="0930", ATTR{idProduct}=="0011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat V30 -ATTR{idVendor}=="0930", ATTR{idProduct}=="0014", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat U -ATTR{idVendor}=="0930", ATTR{idProduct}=="0016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat MEU202 -ATTR{idVendor}=="0930", ATTR{idProduct}=="0018", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat T -ATTR{idVendor}=="0930", ATTR{idProduct}=="0019", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat MEU201 -ATTR{idVendor}=="0930", ATTR{idProduct}=="001a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Gigabeat MET401 -ATTR{idVendor}=="0930", ATTR{idProduct}=="001d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Excite AT300 -ATTR{idVendor}=="0930", ATTR{idProduct}=="0963", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Excite AT200 -ATTR{idVendor}=="0930", ATTR{idProduct}=="0960", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Toshiba Thrive AT100/AT105 -ATTR{idVendor}=="0930", ATTR{idProduct}=="7100", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos Gmini XS100 -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1207", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos XS202 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1208", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 104 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="120a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 204 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="120c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 404 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1301", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 404CAM (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1303", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 504 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1307", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 604 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1309", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 604WIFI (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="130b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 704 mobile dvr -ATTR{idVendor}=="0e79", ATTR{idProduct}=="130d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 704TV (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="130f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 405 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1311", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 605 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1313", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 605F (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1315", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 705 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1319", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos TV+ (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="131b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 105 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="131d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 405HDD (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1321", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 5 (MTP mode 1) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1331", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 5 (MTP mode 2) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1333", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 7 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1335", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos SPOD (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1341", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 5S IT (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1351", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 5H IT (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1357", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 48 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1421", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos Arnova Childpad -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1458", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos Arnova 8c G3 -ATTR{idVendor}=="0e79", ATTR{idProduct}=="145e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos Arnova 10bG3 Tablet -ATTR{idVendor}=="0e79", ATTR{idProduct}=="146b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 97 Xenon -ATTR{idVendor}=="0e79", ATTR{idProduct}=="149a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 97 Titanium -ATTR{idVendor}=="0e79", ATTR{idProduct}=="14ad", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 80 Titanium -ATTR{idVendor}=="0e79", ATTR{idProduct}=="14bf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 Titanium -ATTR{idVendor}=="0e79", ATTR{idProduct}=="14b9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 70b Titanium -ATTR{idVendor}=="0e79", ATTR{idProduct}=="14ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 8o G9 (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1508", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 8o G9 Turbo (MTP mode) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1509", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 80G9 -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1518", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 G9 (ID1) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1528", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 G9 (ID2) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1529", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 G9 Turbo 250 HD -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1538", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 G9 Turbo -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1539", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 XS -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1548", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 70it2 (ID 1) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1568", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 70it2 (ID 2) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="1569", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 70 Cobalt -ATTR{idVendor}=="0e79", ATTR{idProduct}=="15ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 50c -ATTR{idVendor}=="0e79", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos C40 -ATTR{idVendor}=="0e79", ATTR{idProduct}=="31ab", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos Helium 45B -ATTR{idVendor}=="0e79", ATTR{idProduct}=="31d8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos Phone -ATTR{idVendor}=="0e79", ATTR{idProduct}=="31e1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 45 Neon -ATTR{idVendor}=="0e79", ATTR{idProduct}=="31f3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 50 Diamond -ATTR{idVendor}=="0e79", ATTR{idProduct}=="3229", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 G4 -ATTR{idVendor}=="0e79", ATTR{idProduct}=="4002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos (for Tesco) Hudl (ID1) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="5008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos (for Tesco) Hudl (ID2) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="5009", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos AC40DTI -ATTR{idVendor}=="0e79", ATTR{idProduct}=="5217", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 xenon lite -ATTR{idVendor}=="0e79", ATTR{idProduct}=="528c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101 xenon lite (ADB) -ATTR{idVendor}=="0e79", ATTR{idProduct}=="528d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 40 Helium phone -ATTR{idVendor}=="0e79", ATTR{idProduct}=="52c2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos Diamond S -ATTR{idVendor}=="0e79", ATTR{idProduct}=="5305", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 50d neon -ATTR{idVendor}=="0e79", ATTR{idProduct}=="5371", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 70b neon -ATTR{idVendor}=="0e79", ATTR{idProduct}=="5395", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 101b Oxygen -ATTR{idVendor}=="0e79", ATTR{idProduct}=="542f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Archos 55 diamond Selfie -ATTR{idVendor}=="0e79", ATTR{idProduct}=="5465", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Dunlop MP3 player 1GB / EGOMAN MD223AFD -ATTR{idVendor}=="10d6", ATTR{idProduct}=="2200", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Memorex or iRiver MMP 8585/8586 or iRiver E200 -ATTR{idVendor}=="10d6", ATTR{idProduct}=="2300", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sirius Stiletto -ATTR{idVendor}=="18f6", ATTR{idProduct}=="0102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sirius Stiletto 2 -ATTR{idVendor}=="18f6", ATTR{idProduct}=="0110", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N81 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="000a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 6120c Classic Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="002e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N96 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 6500c Classic Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="003c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 3110c Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="005f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 3109c Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0065", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5310 XpressMusic -ATTR{idVendor}=="0421", ATTR{idProduct}=="006c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N95 Mobile Phone 8GB -ATTR{idVendor}=="0421", ATTR{idProduct}=="006e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N82 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0074", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N78 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0079", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 6220 Classic -ATTR{idVendor}=="0421", ATTR{idProduct}=="008d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N85 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0092", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 6210 Navigator -ATTR{idVendor}=="0421", ATTR{idProduct}=="0098", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E71 -ATTR{idVendor}=="0421", ATTR{idProduct}=="00e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E66 -ATTR{idVendor}=="0421", ATTR{idProduct}=="00e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5320 XpressMusic -ATTR{idVendor}=="0421", ATTR{idProduct}=="00ea", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5800 XpressMusic -ATTR{idVendor}=="0421", ATTR{idProduct}=="0154", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5800 XpressMusic v2 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0155", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5800 XpressMusic v3 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0159", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E63 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0179", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N79 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0186", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E71x -ATTR{idVendor}=="0421", ATTR{idProduct}=="01a1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E52 -ATTR{idVendor}=="0421", ATTR{idProduct}=="01cf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 3710 -ATTR{idVendor}=="0421", ATTR{idProduct}=="01ee", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N97-1 -ATTR{idVendor}=="0421", ATTR{idProduct}=="01f4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N97 -ATTR{idVendor}=="0421", ATTR{idProduct}=="01f5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5130 XpressMusic -ATTR{idVendor}=="0421", ATTR{idProduct}=="0209", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E72 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0221", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5530 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0229", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E6 -ATTR{idVendor}=="0421", ATTR{idProduct}=="032f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N97 mini -ATTR{idVendor}=="0421", ATTR{idProduct}=="026b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia X6 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0274", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 6600i -ATTR{idVendor}=="0421", ATTR{idProduct}=="0297", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 2710 -ATTR{idVendor}=="0421", ATTR{idProduct}=="02c1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5230 -ATTR{idVendor}=="0421", ATTR{idProduct}=="02e2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N8 -ATTR{idVendor}=="0421", ATTR{idProduct}=="02fe", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N8 (Ovi mode) -ATTR{idVendor}=="0421", ATTR{idProduct}=="0302", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E7 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0334", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia E7 (Ovi mode) -ATTR{idVendor}=="0421", ATTR{idProduct}=="0335", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia C7 -ATTR{idVendor}=="0421", ATTR{idProduct}=="03c1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia C7 (ID2) -ATTR{idVendor}=="0421", ATTR{idProduct}=="03cd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N950 -ATTR{idVendor}=="0421", ATTR{idProduct}=="03d2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 3250 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0462", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N93 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0478", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5500 Sport Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="047e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N91 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="0485", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5700 XpressMusic Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="04b4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5300 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="04ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 5200 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="04be", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N73 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="04d1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N75 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="04e1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N93i Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="04e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N95 Mobile Phone -ATTR{idVendor}=="0421", ATTR{idProduct}=="04ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N80 Internet Edition (Media Player) -ATTR{idVendor}=="0421", ATTR{idProduct}=="04f1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N9 -ATTR{idVendor}=="0421", ATTR{idProduct}=="051a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N300 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0524", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia C5-00 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0592", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia C5-00 (ID2) -ATTR{idVendor}=="0421", ATTR{idProduct}=="0595", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia 808 PureView -ATTR{idVendor}=="0421", ATTR{idProduct}=="05d3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia Lumia WP8 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0661", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia Lumia 301 -ATTR{idVendor}=="0421", ATTR{idProduct}=="0666", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia XL -ATTR{idVendor}=="0421", ATTR{idProduct}=="06e8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia Lumia (RM-975) -ATTR{idVendor}=="0421", ATTR{idProduct}=="06fc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia X2 Dual Sim -ATTR{idVendor}=="0421", ATTR{idProduct}=="0708", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for Nokia) 5530 Xpressmusic -ATTR{idVendor}=="05c6", ATTR{idProduct}=="0229", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for Nokia/Verizon) 6205 Balboa/Verizon Music Phone -ATTR{idVendor}=="05c6", ATTR{idProduct}=="3196", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for Gigabyte) GSmart G1342 -ATTR{idVendor}=="05c6", ATTR{idProduct}=="8800", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for Smartfren) Andromax U -ATTR{idVendor}=="05c6", ATTR{idProduct}=="9025", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for OnePlus) One (MTP) -ATTR{idVendor}=="05c6", ATTR{idProduct}=="6764", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for OnePlus) One (MTP+ADB) -ATTR{idVendor}=="05c6", ATTR{idProduct}=="6765", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for Xolo) Xolo Black (MTP) -ATTR{idVendor}=="901b", ATTR{idProduct}=="9039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for PhiComm) C230w (MTP) -ATTR{idVendor}=="05c6", ATTR{idProduct}=="9039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for OnePlus) One Plus 2 (A2003) (MTP) -ATTR{idVendor}=="05c6", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Qualcomm (for Highscreen) Omega Prime S -ATTR{idVendor}=="05c6", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Logik LOG DAX MP3 and DAB Player -ATTR{idVendor}=="13d1", ATTR{idProduct}=="7002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Technika MP-709 -ATTR{idVendor}=="13d1", ATTR{idProduct}=="7017", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Thomson EM28 Series -ATTR{idVendor}=="069b", ATTR{idProduct}=="0774", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Thomson / RCA Opal / Lyra MC4002 -ATTR{idVendor}=="069b", ATTR{idProduct}=="0777", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Thomson Lyra MC5104B (M51 Series) -ATTR{idVendor}=="069b", ATTR{idProduct}=="077c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Thomson RCA H106 -ATTR{idVendor}=="069b", ATTR{idProduct}=="301a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Thomson scenium E308 -ATTR{idVendor}=="069b", ATTR{idProduct}=="3028", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Thomson / RCA Lyra HC308A -ATTR{idVendor}=="069b", ATTR{idProduct}=="3035", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fujitsu, Ltd F903iX HIGH-SPEED -ATTR{idVendor}=="04c5", ATTR{idProduct}=="1140", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fujitsu, Ltd STYLISTIC M532 -ATTR{idVendor}=="04c5", ATTR{idProduct}=="133b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fujitsu, Ltd F02-E -ATTR{idVendor}=="04c5", ATTR{idProduct}=="1378", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fujitsu, Ltd Arrows 202F -ATTR{idVendor}=="04c5", ATTR{idProduct}=="13dd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# NormSoft, Inc. Pocket Tunes -ATTR{idVendor}=="1703", ATTR{idProduct}=="0001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# NormSoft, Inc. Pocket Tunes 4 -ATTR{idVendor}=="1703", ATTR{idProduct}=="0002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TrekStor Vibez 8/12GB -ATTR{idVendor}=="066f", ATTR{idProduct}=="842a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Medion MD8333 (ID1) -ATTR{idVendor}=="066f", ATTR{idProduct}=="8550", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Medion MD8333 (ID2) -ATTR{idVendor}=="066f", ATTR{idProduct}=="8588", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Verizon Ellipsis 7 -ATTR{idVendor}=="0408", ATTR{idProduct}=="3899", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Medion MD99000 (P9514)/Olivetti Olipad 110 -ATTR{idVendor}=="0408", ATTR{idProduct}=="b009", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Medion Lifetab P9514 -ATTR{idVendor}=="0408", ATTR{idProduct}=="b00a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Maxfield G-Flash NG 1GB -ATTR{idVendor}=="066f", ATTR{idProduct}=="846c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SigmaTel Inc. MTPMSCN Audio Player -ATTR{idVendor}=="066f", ATTR{idProduct}=="a010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TrekStor i.Beat Sweez FM -ATTR{idVendor}=="0402", ATTR{idProduct}=="0611", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TrekStor i.Beat Organix 2.0 -ATTR{idVendor}=="1e68", ATTR{idProduct}=="0002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRiver Tolino Tab 7 -ATTR{idVendor}=="1e68", ATTR{idProduct}=="1002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Disney MixMax -ATTR{idVendor}=="0aa6", ATTR{idProduct}=="6021", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Tevion MD 81488 -ATTR{idVendor}=="0aa6", ATTR{idProduct}=="3011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# MyMusix PD-6070 -ATTR{idVendor}=="0aa6", ATTR{idProduct}=="9601", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio U3 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0701", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio 6 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0711", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio 7 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0751", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio U5 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0761", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio D2 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0801", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio D2+ FW 2.x (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0861", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio D2+ DAB FW 4.x (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0871", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio D2+ FW 3.x (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0881", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio D2+ DMB FW 1.x (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0891", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio S9 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0901", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio 9 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0911", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio J3 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0921", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio X7 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0931", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio C2 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0941", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cowon iAudio 10 (MTP mode) -ATTR{idVendor}=="0e21", ATTR{idProduct}=="0952", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Insignia NS-DV45 -ATTR{idVendor}=="19ff", ATTR{idProduct}=="0303", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Insignia Sport Player -ATTR{idVendor}=="19ff", ATTR{idProduct}=="0307", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Insignia Pilot 4GB -ATTR{idVendor}=="19ff", ATTR{idProduct}=="0309", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. T54 -ATTR{idVendor}=="043e", ATTR{idProduct}=="7040", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. UP3 -ATTR{idVendor}=="043e", ATTR{idProduct}=="70b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. VX8550 V CAST Mobile Phone -ATTR{idVendor}=="1004", ATTR{idProduct}=="6010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. KC910 Renoir Mobile Phone -ATTR{idVendor}=="1004", ATTR{idProduct}=="608f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. GR-500 Music Player -ATTR{idVendor}=="1004", ATTR{idProduct}=="611b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. KM900 -ATTR{idVendor}=="1004", ATTR{idProduct}=="6132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG8575 -ATTR{idVendor}=="1004", ATTR{idProduct}=="619a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. Android phone (ID1) -ATTR{idVendor}=="1004", ATTR{idProduct}=="61f1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. Android phone (ID2) -ATTR{idVendor}=="1004", ATTR{idProduct}=="61f9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG VS980 -ATTR{idVendor}=="1004", ATTR{idProduct}=="621c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG2 Optimus -ATTR{idVendor}=="1004", ATTR{idProduct}=="6225", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG VS950 -ATTR{idVendor}=="1004", ATTR{idProduct}=="622a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG VS870 -ATTR{idVendor}=="1004", ATTR{idProduct}=="6239", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG VS890 -ATTR{idVendor}=="1004", ATTR{idProduct}=="623d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG Optimus Zone 2 -ATTR{idVendor}=="1004", ATTR{idProduct}=="6259", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. VK810 -ATTR{idVendor}=="1004", ATTR{idProduct}=="6265", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. G3 -ATTR{idVendor}=="1004", ATTR{idProduct}=="627f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. 810 tablet -ATTR{idVendor}=="1004", ATTR{idProduct}=="6263", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. G3 (VS985) -ATTR{idVendor}=="1004", ATTR{idProduct}=="626e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. Various E and P models -ATTR{idVendor}=="1004", ATTR{idProduct}=="631c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# LG Electronics Inc. LG G Flex 2 -ATTR{idVendor}=="1004", ATTR{idProduct}=="633e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-A815/NWZ-A818 -ATTR{idVendor}=="054c", ATTR{idProduct}=="0325", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S516 -ATTR{idVendor}=="054c", ATTR{idProduct}=="0326", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S615F/NWZ-S616F/NWZ-S618F -ATTR{idVendor}=="054c", ATTR{idProduct}=="0327", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S716F -ATTR{idVendor}=="054c", ATTR{idProduct}=="035a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-A826/NWZ-A828/NWZ-A829 -ATTR{idVendor}=="054c", ATTR{idProduct}=="035b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-A726/NWZ-A728/NWZ-A768 -ATTR{idVendor}=="054c", ATTR{idProduct}=="035c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-B135 -ATTR{idVendor}=="054c", ATTR{idProduct}=="036e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-E436F -ATTR{idVendor}=="054c", ATTR{idProduct}=="0385", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-W202 -ATTR{idVendor}=="054c", ATTR{idProduct}=="0388", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S739F -ATTR{idVendor}=="054c", ATTR{idProduct}=="038c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S638F -ATTR{idVendor}=="054c", ATTR{idProduct}=="038e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-X1050B/NWZ-X1060B -ATTR{idVendor}=="054c", ATTR{idProduct}=="0397", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-X1051/NWZ-X1061 -ATTR{idVendor}=="054c", ATTR{idProduct}=="0398", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-B142F -ATTR{idVendor}=="054c", ATTR{idProduct}=="03d8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-E344/E345 -ATTR{idVendor}=="054c", ATTR{idProduct}=="03fc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-E445 -ATTR{idVendor}=="054c", ATTR{idProduct}=="03fd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S545 -ATTR{idVendor}=="054c", ATTR{idProduct}=="03fe", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-A845 -ATTR{idVendor}=="054c", ATTR{idProduct}=="0404", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-W252B -ATTR{idVendor}=="054c", ATTR{idProduct}=="04bb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-B153F -ATTR{idVendor}=="054c", ATTR{idProduct}=="04be", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-E354 -ATTR{idVendor}=="054c", ATTR{idProduct}=="04cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S754 -ATTR{idVendor}=="054c", ATTR{idProduct}=="04cc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony Sony Tablet P1 -ATTR{idVendor}=="054c", ATTR{idProduct}=="04d1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-B163F -ATTR{idVendor}=="054c", ATTR{idProduct}=="059a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-E464 -ATTR{idVendor}=="054c", ATTR{idProduct}=="05a6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-S765 -ATTR{idVendor}=="054c", ATTR{idProduct}=="05a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony Sony Tablet S -ATTR{idVendor}=="054c", ATTR{idProduct}=="05b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony Sony Tablet S1 -ATTR{idVendor}=="054c", ATTR{idProduct}=="05b4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-B173F -ATTR{idVendor}=="054c", ATTR{idProduct}=="0689", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony NWZ-E474 -ATTR{idVendor}=="054c", ATTR{idProduct}=="06a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Sony DCR-SR75 -ATTR{idVendor}=="054c", ATTR{idProduct}=="1294", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson K850i -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0075", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W910 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0076", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W890i -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W760i -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00c6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson C902 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00d4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson C702 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00d9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W980 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00da", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson C905 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W595 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00f3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W902 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00f5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson T700 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="00fb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W705/W715 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W995 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0112", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson U5 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0133", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson U8i -ATTR{idVendor}=="0fce", ATTR{idProduct}=="013a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson j10i2 (Elm) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0144", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson j108i (Cedar) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="014e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson W302 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="10c8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson j10i (Elm) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="d144", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson K550i -ATTR{idVendor}=="0fce", ATTR{idProduct}=="e000", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson c1605 Xperia Dual E MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0146", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson LT15i Xperia arc S MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="014f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson MT11i Xperia Neo MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0156", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson IS12S Xperia Acro MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0157", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson MK16i Xperia MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="015a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson R800/R88i Xperia Play MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="015d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson ST18a Xperia Ray MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson SK17i Xperia Mini Pro MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0166", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson ST15i Xperia Mini MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson ST17i Xperia Active MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT26i Xperia S MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY WT19i Live Walkman MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="016d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST21i Xperia Tipo MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST15i Xperia U MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT22i Xperia P MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY MT27i Xperia Sola MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0173", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT26w Xperia Acro HD IS12S MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0175", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT26w Xperia Acro HD SO-03D MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT28at Xperia Ion MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0177", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT29i Xperia GX MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0178", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST27i/ST27a Xperia go MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="017e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST23i Xperia Miro MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0180", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY SO-05D Xperia SX MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0181", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT30p Xperia T MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0182", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT25i Xperia V MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0186", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia J MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0188", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia ZL MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0189", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="018c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Tablet Z MTP 1 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="018d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia L MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0192", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0193", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Tablet Z MTP 2 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0194", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia SP MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0195", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP (ID2) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0196", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia ZR MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0197", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia A MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="0198", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="019b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP (ID3) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="019c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z1 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="019e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia C MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01a3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z1 Compact D5503 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01a7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01aa", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 Dual MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01ab", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z2 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01af", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3v MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z2 Tablet MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E1 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01b5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01b6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 Aqua MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01b8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 Compact MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01bb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E3 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01bc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 Tablet MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01c0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria M4 Aqua Dual MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01c4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY E2115 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01c5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z3+ MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01c9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria E4g MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY C4 Dual MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01d2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria M5 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01d6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z5 MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01d9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z5 Compact MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01da", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria XA MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01de", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria XZ MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01e7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria X Compact MTP -ATTR{idVendor}=="0fce", ATTR{idProduct}=="01e8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson IS12S Xperia Acro MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4157", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson ST17i Xperia Active MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT26i Xperia S MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST21i Xperia Tipo MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST25i Xperia U MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT22i Xperia P MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY MT27i Xperia Sola MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4173", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT26w Xperia Acro HD IS12S MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4175", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT26w Xperia Acro HD SO-03D MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT28at Xperia Ion MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4177", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT29i Xperia GX MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4178", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST27i/ST27a Xperia go MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="417e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST23i Xperia Miro MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4180", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY SO-05D Xperia SX MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4181", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT30p Xperia T MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4182", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT25i Xperia V MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4186", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia J MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4188", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia ZL MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4189", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="418c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Tablet Z MTP+CDROM 1 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="418d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia L MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4192", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4193", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Tablet Z MTP+CDROM 2 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4194", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia SP MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="4195", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="419b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP+CDROM (ID3) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="419c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z1 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="419e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia C MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41a3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z1 Compact D5503 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41a7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41aa", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 Dual MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41ab", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z2 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41af", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3v MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z2 Tablet MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E1 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41b5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41b6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 Aqua MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41b8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 Compact MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41bb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E3 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41bc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 Tablet MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41c0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria M4 Aqua Dual MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41c4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY E2115 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41c5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z3+ MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41c9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria E4g MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY C4 Dual MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41d2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria M5 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41d6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z5 MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41d9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z5 Compact MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41da", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria XA MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41de", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria XZ MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41e7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria X Compact MTP+CDROM -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41e8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson c1605 Xperia Dual E MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5146", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson LT15i Xperia Arc MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="514f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson MT11i Xperia Neo MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5156", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson IS12S Xperia Acro MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5157", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson MK16i Xperia MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="515a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson R800/R88i Xperia Play MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="515d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson ST18i Xperia Ray MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson SK17i Xperia Mini Pro MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5166", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson ST15i Xperia Mini MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson ST17i Xperia Active MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT26i Xperia S MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SonyEricsson WT19i Live Walkman MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="516d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST21i Xperia Tipo MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST25i Xperia U MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT22i Xperia P MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY MT27i Xperia Sola MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5173", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY IS12S Xperia Acro HD MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5175", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY SO-03D Xperia Acro HD MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT28at Xperia Ion MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5177", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT29i Xperia GX MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5178", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST27i/ST27a Xperia go MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="517e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST23i Xperia Miro MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5180", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY SO-05D Xperia SX MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5181", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT30p Xperia T MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5182", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT25i Xperia V MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5186", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia J MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5188", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia ZL MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5189", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="518c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Tablet Z MTP+ADB 1 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="518d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia L MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5192", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5193", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Tablet Z MTP+ADB 2 -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5194", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia SP MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5195", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP+ADB (ID2) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5196", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia ZR MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5197", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia A MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="5198", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="519b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP+ADB (ID3) -ATTR{idVendor}=="0fce", ATTR{idProduct}=="519c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z1 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="519e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia C MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51a3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z1 Compact MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51a7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51aa", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 Dual MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51ab", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z2 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51af", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3v MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z2 Tablet MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E1 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51b5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z Ultra MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51b6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia M2 Aqua MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51b8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 Compact MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51bb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia E3 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51bc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY Xperia Z3 Tablet MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="41c0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria M4 Aqua Dual MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51c4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY E2115 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51c5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z3+ MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51c9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria E4g MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY C4 Dual MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51d2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria M5 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51d6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z5 MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51d9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria Z5 Compact MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51da", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria XA MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51de", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria XZ MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51e7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY XPeria X Compact MTP+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="51e8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY MT27i Xperia Sola MTP+UMS -ATTR{idVendor}=="0fce", ATTR{idProduct}=="a173", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY IS12S Xperia Acro HD MTP+UMS -ATTR{idVendor}=="0fce", ATTR{idProduct}=="a175", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY SO-03D Xperia Acro HD MTP+UMS -ATTR{idVendor}=="0fce", ATTR{idProduct}=="a176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT28at Xperia Ion MTP+UMS -ATTR{idVendor}=="0fce", ATTR{idProduct}=="a177", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST27i/ST27a Xperia go MTP+UMS -ATTR{idVendor}=="0fce", ATTR{idProduct}=="a17e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY MT27i Xperia Sola MTP+UMS+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="b173", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY IS12S Xperia Acro MTP+UMS+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="b175", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY SO-03D Xperia Acro MTP+UMS+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="b176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY LT28at Xperia Ion MTP+UMS+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="b177", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SONY ST27i/ST27a Xperia go MTP+UMS+ADB -ATTR{idVendor}=="0fce", ATTR{idProduct}=="b17e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola XT1524 (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="002e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola V3m/V750 verizon -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2a65", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Atrix/Razr HD (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e32", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Atrix/Razr HD (MTP+ADB) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e33", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola RAZR M XT907 (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e50", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola RAZR M XT907 (MTP+ADB) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e51", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Droid Turbo 2 (XT1585) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e61", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Moto X (XT1053) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e62", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Moto X (XT1058) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e63", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Moto X (XT1080) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e66", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Droid Maxx (XT1080) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e67", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Droid Ultra -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e68", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Moto G (ID1) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e76", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Moto G (ID2) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e82", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Moto G (XT1032) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e84", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Moto Maxx (XT1225) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2ea4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola MB632 -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2dff", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Xoom 2 Media Edition (ID3) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="41cf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Droid X/MB525 (Defy) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="41d6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola DROID2 (ID1) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="41da", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Milestone / Verizon Droid -ATTR{idVendor}=="22b8", ATTR{idProduct}=="41dc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola DROID2 (ID2) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="42a7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Xoom 2 Media Edition (ID2) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="4306", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Xoom 2 Media Edition -ATTR{idVendor}=="22b8", ATTR{idProduct}=="4311", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola XT912/XT928 -ATTR{idVendor}=="22b8", ATTR{idProduct}=="4362", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola DROID4 (PTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="4373", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola DROID4 -ATTR{idVendor}=="22b8", ATTR{idProduct}=="437f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola IdeaPad K1 -ATTR{idVendor}=="22b8", ATTR{idProduct}=="4811", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola A1200 -ATTR{idVendor}=="22b8", ATTR{idProduct}=="60ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola MTP Test Command Interface -ATTR{idVendor}=="22b8", ATTR{idProduct}=="6413", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola RAZR2 V8/U9/Z6 -ATTR{idVendor}=="22b8", ATTR{idProduct}=="6415", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Razr D1/D3/i (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="64b5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Razr D1/D3/i (MTP+?) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="64b6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Atrix XT687 (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="64cf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Atrix MB860 (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="7088", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Xoom (Factory test) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Xoom (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Xoom (MTP+ADB) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Milestone X2 -ATTR{idVendor}=="22b8", ATTR{idProduct}=="70ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola XT890/907/Razr (MTP) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="710d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola XT890/907/Razr (MTP+ADB) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="710e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Droid Turbo (XT1254) -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2ea5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Motorola Droid Turbo Verizon -ATTR{idVendor}=="22b8", ATTR{idProduct}=="2ea8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Allwinner) A31 SoC -ATTR{idVendor}=="18d1", ATTR{idProduct}=="0006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Ainol Novo) Fire/Flame -ATTR{idVendor}=="18d1", ATTR{idProduct}=="0007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Sony) S1 -ATTR{idVendor}=="18d1", ATTR{idProduct}=="05b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Barnes & Noble) Nook Color -ATTR{idVendor}=="18d1", ATTR{idProduct}=="2d02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Asus) TF201 Transformer -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4d00", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Asus) TF101 Transformer -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Samsung) Nexus S (MTP) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e25", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Samsung) Nexus S (MTP+ADB) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e26", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Asus) Nexus 7 (MTP) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e41", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Asus) Nexus 7 (MTP+ADB) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc Nexus/Pixel (MTP) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc Nexus/Pixel (MTP+ADB) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc Nexus/Pixel (PTP) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc Nexus/Pixel (PTP+ADB) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Pixel C (MTP) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="5202", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Pixel C (MTP+ADB) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="5203", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Motorola) Xoom (MZ604) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="70a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Toshiba) Thrive 7/AT105 -ATTR{idVendor}=="18d1", ATTR{idProduct}=="7102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Lenovo) Ideapad K1 -ATTR{idVendor}=="18d1", ATTR{idProduct}=="740a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for Medion) MD99000 (P9514) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="b00a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Meizu Pro 5 Ubuntu Phone -ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for LG Electronics) P990/Optimus (Cyanogen) -ATTR{idVendor}=="18d1", ATTR{idProduct}=="d109", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Google Inc (for LG Electronics) P990/Optimus -ATTR{idVendor}=="18d1", ATTR{idProduct}=="d10a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kenwood Media Keg HD10GB7 Sport Player -ATTR{idVendor}=="0b28", ATTR{idProduct}=="100c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Micro-Star International P610/Model MS-5557 -ATTR{idVendor}=="0db0", ATTR{idProduct}=="5572", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# FOMA D905i -ATTR{idVendor}=="06d3", ATTR{idProduct}=="21ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Haier Ibiza Rhapsody 1 -ATTR{idVendor}=="1302", ATTR{idProduct}=="1016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Haier Ibiza Rhapsody 2 -ATTR{idVendor}=="1302", ATTR{idProduct}=="1017", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Panasonic P905i -ATTR{idVendor}=="04da", ATTR{idProduct}=="2145", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Panasonic P906i -ATTR{idVendor}=="04da", ATTR{idProduct}=="2158", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Polaroid Freescape/MPU-433158 -ATTR{idVendor}=="0546", ATTR{idProduct}=="2035", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Pioneer XMP3 -ATTR{idVendor}=="08e4", ATTR{idProduct}=="0148", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Slacker Inc. Slacker Portable Media Player -ATTR{idVendor}=="1bdc", ATTR{idProduct}=="fabf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Conceptronic CMTD2 -ATTR{idVendor}=="1e53", ATTR{idProduct}=="0005", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# O2 Sistemas ZoltarTV -ATTR{idVendor}=="1e53", ATTR{idProduct}=="0006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Wyplay Wyplayer -ATTR{idVendor}=="1e53", ATTR{idProduct}=="0007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Perception Digital, Ltd Gigaware GX400 -ATTR{idVendor}=="0aa6", ATTR{idProduct}=="9702", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# RIM BlackBerry Storm/9650 -ATTR{idVendor}=="0fca", ATTR{idProduct}=="8007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# RIM BlackBerry Priv -ATTR{idVendor}=="0fca", ATTR{idProduct}=="8031", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# RIM BlackBerry Dtek 60 -ATTR{idVendor}=="0fca", ATTR{idProduct}=="8041", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nextar MA715A-8R -ATTR{idVendor}=="0402", ATTR{idProduct}=="5668", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Coby COBY MP705 -ATTR{idVendor}=="1e74", ATTR{idProduct}=="6512", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Curitel Communications, Inc. Verizon Wireless Device -ATTR{idVendor}=="106c", ATTR{idProduct}=="3215", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Pantech Crux -ATTR{idVendor}=="106c", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Zenfone Go (ZC500TG) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF300 Transformer (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c80", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF300 Transformer (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c81", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF700 Transformer (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c90", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF700 Transformer (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c91", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF701T Transformer Pad (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4ca0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF701T Transformer Pad (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4ca1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ME302KL MeMo Pad FHD10 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4cc0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ME302KL MeMo Pad FHD10 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4cc1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ME301T MeMo Pad Smart 10 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4cd0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ME301T MeMo Pad Smart 10 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4cd1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Asus Fonepad Note 6 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4ce0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Asus Fonepad Note 6 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4ce1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF201 Transformer Prime (keyboard dock) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d00", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF201 Transformer Prime (tablet only) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus SL101 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e00", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus SL101 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF101 Eeepad Transformer (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TF101 Eeepad Transformer (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e1f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Fonepad -ATTR{idVendor}=="0b05", ATTR{idProduct}=="514f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5200", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5201", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ME302C MemoPad (MTP+?) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="520f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone 2 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5210", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone 2 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5211", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone 2 (PTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5214", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ME302C MemoPad (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="521f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone Infinity (2nd ID) (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5220", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone Infinity (2nd ID) (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5221", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone Infinity (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5230", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus PadFone Infinity (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5231", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Memo ME172V (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5400", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Fonepad 7 LTE ME372CL (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="540f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Memo ME173X (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5410", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Memo ME173X (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5411", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Fonepad 7 LTE ME372CL (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="541f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Memo K00F (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5460", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Memo Pad 8 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5466", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Memo K00F (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5468", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 5 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5480", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 5 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5481", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 6 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5490", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 6 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5491", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus K010 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5500", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus MemoPad 7 (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5506", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus K00E (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="550f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus MemoPad 8 ME181 CX (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5561", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Zenfone 2 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5600", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Z00AD (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5601", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus TX201LA (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="561f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 4 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="580f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 4 A400CG (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="581f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ASUS FonePad 8 FE380CG (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="590f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus A450CG (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5a0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenPad 80 (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5e0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Zenfone 2 ZE550ML (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5f02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Zenfone 2 ZE551ML (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="5f03", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ME581CL -ATTR{idVendor}=="0b05", ATTR{idProduct}=="7770", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus MemoPad 7 (ME572CL) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="7772", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus Fonepad 7 (FE375CXG) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="7773", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 5 A500KL (MTP) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="7780", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Asus ZenFone 5 A500KL (MTP+ADB) -ATTR{idVendor}=="0b05", ATTR{idProduct}=="7781", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo P70-A -ATTR{idVendor}=="17ef", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo P70 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo K1 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="740a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo ThinkPad Tablet -ATTR{idVendor}=="17ef", ATTR{idProduct}=="741c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Medion Lifetab P9516 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7483", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo P700 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7497", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A820 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7498", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo P780 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="74a6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Lifetab S9512 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="74cc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo S660 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="74f8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo IdeaTab A2109A -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7542", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo IdeaTab S2210a -ATTR{idVendor}=="17ef", ATTR{idProduct}=="757d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo K900 (ID2) -ATTR{idVendor}=="17ef", ATTR{idProduct}=="75b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo K900 (ID1) -ATTR{idVendor}=="17ef", ATTR{idProduct}=="75b5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo IdeaPad A3000 (ID1) -ATTR{idVendor}=="17ef", ATTR{idProduct}=="75bc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo IdeaPad A3000 (ID2) -ATTR{idVendor}=="17ef", ATTR{idProduct}=="75be", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A706 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7614", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo IdeaTab S5000 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="76e8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Toga Tablet B6000-F -ATTR{idVendor}=="17ef", ATTR{idProduct}=="76f2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Yoga Tablet 10 B8000-H -ATTR{idVendor}=="17ef", ATTR{idProduct}=="76ff", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo S960 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="770a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo K910SS -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7713", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo S930 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7718", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A5500-F -ATTR{idVendor}=="17ef", ATTR{idProduct}=="772b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A7600-F -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7731", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A3500-F -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7737", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A3500-FL -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7738", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo LifeTab E733X -ATTR{idVendor}=="17ef", ATTR{idProduct}=="775a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo K920 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="778f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Yoga Tablet 2 - 1050F -ATTR{idVendor}=="17ef", ATTR{idProduct}=="77a4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Yoga Tablet 2 Pro -ATTR{idVendor}=="17ef", ATTR{idProduct}=="77b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Tab S8-50F -ATTR{idVendor}=="17ef", ATTR{idProduct}=="77d8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Vibe Z2 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="77ea", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo K3 Note -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7883", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A10-70F -ATTR{idVendor}=="17ef", ATTR{idProduct}=="789a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A10-70L -ATTR{idVendor}=="17ef", ATTR{idProduct}=="789b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Medion P8312 Tablet -ATTR{idVendor}=="17ef", ATTR{idProduct}=="78ae", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Lifetab S1034X -ATTR{idVendor}=="17ef", ATTR{idProduct}=="78b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo PHAB Plus -ATTR{idVendor}=="17ef", ATTR{idProduct}=="78d1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Vibe K4 Note -ATTR{idVendor}=="17ef", ATTR{idProduct}=="78f6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Vibe P1 Pro -ATTR{idVendor}=="17ef", ATTR{idProduct}=="78fc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Vibe X -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7902", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo P1ma40 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7921", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A1000 Smartphone -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7928", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo A1000 Smartphone ADB -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7929", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo TAB 2 A10-30 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7949", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo K5 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7993", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Vibe K5 Note -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7999", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo Vibe K4 -ATTR{idVendor}=="17ef", ATTR{idProduct}=="79b7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Lenovo B Smartphone -ATTR{idVendor}=="17ef", ATTR{idProduct}=="7a18", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei MTP device (ID1) -ATTR{idVendor}=="12d1", ATTR{idProduct}=="1051", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei MTP device (ID2) -ATTR{idVendor}=="12d1", ATTR{idProduct}=="1052", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Honor 7 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="1074", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei H60-L11 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="1079", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei H60-L12 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="107a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Nova -ATTR{idVendor}=="12d1", ATTR{idProduct}=="107d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei P9 Plus -ATTR{idVendor}=="12d1", ATTR{idProduct}=="107e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Ascend P8 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="1082", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Honor 3C -ATTR{idVendor}=="12d1", ATTR{idProduct}=="2012", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Y320-U10 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="2406", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Y360-U61 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="2567", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Y360-U03 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="256b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Y560-L01 -ATTR{idVendor}=="12d1", ATTR{idProduct}=="259c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Mediapad (mode 0) -ATTR{idVendor}=="12d1", ATTR{idProduct}=="360f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Huawei Mediapad (mode 1) -ATTR{idVendor}=="12d1", ATTR{idProduct}=="361f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE V55 ID 1 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0244", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE V55 ID 2 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0245", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE V790/Blade 3 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0306", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE V880E -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0307", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE Grand X In -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0343", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE V985 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="0383", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE V5 -ATTR{idVendor}=="19d2", ATTR{idProduct}=="ffce", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# ZTE Z9 Max -ATTR{idVendor}=="19d2", ATTR{idProduct}=="ffcf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC One M9 (1st ID) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="040b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Spreadtrum SH57MYZ03342 (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="05e3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Desire 510 (MTP+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="05fd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC One M8 Google Play Edition (MTP+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="060b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC One Mini 2 (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0629", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC One M9 (2nd ID) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="065c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Desire 626s (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0668", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Desire 520 -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0670", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC6515LVW/One Remix -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="07d8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC X920E -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="07a1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (HTC6500LVW) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="07ae", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One M8 (HTC6525LVW) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="07ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One M8 (Verizon) (HTC6525LVW) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="07cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One Remix (HTC6515LVW) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="07d9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Windows Phone 8X ID1 -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ba1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Windows Phone 8X ID2 -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ba2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Android Device ID1 (Zopo, HD2, Bird...) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC EVO 4G LTE/One V (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c93", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC EVO 4G LTE/One V (ID2) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ca8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One S (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0cec", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC One Mini (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dcd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One 802w (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dd2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Desire X -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dd5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dda", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Butterfly X290d -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0de4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (MTP+UMS+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dea", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Evo 4G LTE (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0df5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One S (ID2) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0df8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One S (ID3) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0df9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One X (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dfa", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One X (ID2) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dfb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One X (ID3) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dfc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One X (ID4) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dfd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Butterfly (ID1) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dfe", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Droid DNA (MTP+UMS+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dff", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Droid Incredible 4G LTE (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0e31", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC Droid Incredible 4G LTE (MTP+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0e32", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Droid DNA (MTP+UMS) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ebd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Desire 310 (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ec6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Desire 310 (2nd id) (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ec7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Desire 816G (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0edb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Desire 626G Dual Sim (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0edd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (MTP+ADB+CDC) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f5f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (MTP+CDC) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f60", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (MTP+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f63", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f64", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (MTP+ADB+?) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f87", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One (ID3) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f91", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One M8 (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f25", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One M8 (MTP+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="061a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One M8 (MTP+UMS) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fb5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC HTC One M8 (MTP+ADB+UMS) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fb4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Android Device ID2 (Zopo, HD2...) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Motorola Razr D1 -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2012", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Motorola P98 4G -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="201d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC One M9 (3rd ID) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="4ee1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC One M9 (4th ID) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="4ee2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC (for Hewlett-Packard) HP Touchpad (MTP) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="685c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC (for Hewlett-Packard) HP Touchpad (MTP+ADB) -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="6860", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HTC Windows Phone 8s ID1 -ATTR{idVendor}=="0bb4", ATTR{idProduct}=="f0ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# NEC FOMA N01A -ATTR{idVendor}=="0409", ATTR{idProduct}=="0242", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# NEC Casio C811 -ATTR{idVendor}=="0409", ATTR{idProduct}=="0326", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# NEC Casio CA-201L -ATTR{idVendor}=="0409", ATTR{idProduct}=="0432", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia CM9-Adam -ATTR{idVendor}=="0955", ATTR{idProduct}=="70a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia Various tablets (ID1) -ATTR{idVendor}=="0955", ATTR{idProduct}=="7100", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia Various tablets (ID2) -ATTR{idVendor}=="0955", ATTR{idProduct}=="7102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia Jetson TX1 -ATTR{idVendor}=="0955", ATTR{idProduct}=="7721", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia Shield (ID1) -ATTR{idVendor}=="0955", ATTR{idProduct}=="b400", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia Shield (Tegra4) -ATTR{idVendor}=="0955", ATTR{idProduct}=="b401", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia Tegra Note -ATTR{idVendor}=="0955", ATTR{idProduct}=="cf02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# nVidia Shield (ID2) -ATTR{idVendor}=="0955", ATTR{idProduct}=="cf07", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nokia N1 -ATTR{idVendor}=="0489", ATTR{idProduct}=="1ab0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# InFocus M808 -ATTR{idVendor}=="0489", ATTR{idProduct}=="c00b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# InFocus M810 -ATTR{idVendor}=="0489", ATTR{idProduct}=="c025", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Vizio Unknown 1 -ATTR{idVendor}=="0489", ATTR{idProduct}=="c026", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Vizio VTAB1008 -ATTR{idVendor}=="0489", ATTR{idProduct}=="e040", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Vizio (for Lenovo) LIFETAB S9714 -ATTR{idVendor}=="0489", ATTR{idProduct}=="e111", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire 2G (ID1) -ATTR{idVendor}=="1949", ATTR{idProduct}=="0005", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire (ID1) -ATTR{idVendor}=="1949", ATTR{idProduct}=="0007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire (ID2) -ATTR{idVendor}=="1949", ATTR{idProduct}=="0008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire (ID3) -ATTR{idVendor}=="1949", ATTR{idProduct}=="000a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire (ID6) -ATTR{idVendor}=="1949", ATTR{idProduct}=="000b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire (ID4) -ATTR{idVendor}=="1949", ATTR{idProduct}=="000c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire (ID7) -ATTR{idVendor}=="1949", ATTR{idProduct}=="000d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire (ID5) -ATTR{idVendor}=="1949", ATTR{idProduct}=="0012", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire HD6 -ATTR{idVendor}=="1949", ATTR{idProduct}=="00f2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire 8 -ATTR{idVendor}=="1949", ATTR{idProduct}=="0211", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire 8 HD -ATTR{idVendor}=="1949", ATTR{idProduct}=="0212", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire 7 -ATTR{idVendor}=="1949", ATTR{idProduct}=="0221", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Kindle Fire 5 -ATTR{idVendor}=="1949", ATTR{idProduct}=="0222", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Amazon Fire Phone -ATTR{idVendor}=="1949", ATTR{idProduct}=="0800", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Barnes&Noble Nook HD+ -ATTR{idVendor}=="2080", ATTR{idProduct}=="0005", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Barnes&Noble Nook HD -ATTR{idVendor}=="2080", ATTR{idProduct}=="0006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Barnes&Noble Nook Glowlight+ -ATTR{idVendor}=="2080", ATTR{idProduct}=="000a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Various Viewpia DR/bq Kepler -ATTR{idVendor}=="2207", ATTR{idProduct}=="0001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# YiFang BQ Tesla -ATTR{idVendor}=="2207", ATTR{idProduct}=="0006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Various Viewpia DR/bq Kepler Debugging -ATTR{idVendor}=="2207", ATTR{idProduct}=="0011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kobo Arc 7 HD -ATTR{idVendor}=="2237", ATTR{idProduct}=="b108", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kobo Arc (ID1) -ATTR{idVendor}=="2237", ATTR{idProduct}=="d108", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kobo Arc (ID2) -ATTR{idVendor}=="2237", ATTR{idProduct}=="d109", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Hisense E860 (ID1) -ATTR{idVendor}=="109b", ATTR{idProduct}=="9106", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Hisense E860 (ID2) -ATTR{idVendor}=="109b", ATTR{idProduct}=="9109", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Intel Point of View TAB-I847 -ATTR{idVendor}=="8087", ATTR{idProduct}=="092a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Intel Xolo 900/AZ210A -ATTR{idVendor}=="8087", ATTR{idProduct}=="09fb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Intel Noblex T7A21 -ATTR{idVendor}=="8087", ATTR{idProduct}=="0a16", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Intel Foxconn iView i700 -ATTR{idVendor}=="8087", ATTR{idProduct}=="0a15", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Intel Telcast Air 3G -ATTR{idVendor}=="8087", ATTR{idProduct}=="0a5e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Intel Chuwi vi8 -ATTR{idVendor}=="8087", ATTR{idProduct}=="0a5f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Mi-3w (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="0360", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Mi-3 (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="0368", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi MiPad (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="0660", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi MiPad (MTP+ADB) -ATTR{idVendor}=="2717", ATTR{idProduct}=="0668", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Hongmi (MTP+ADB) -ATTR{idVendor}=="2717", ATTR{idProduct}=="1240", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Hongmi (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="1248", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Redmi 1S (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="1260", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Redmi HM 1S (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="1268", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi HM NOTE 1LTEW MIUI (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="1368", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Mi-2 (MTP+ADB) -ATTR{idVendor}=="2717", ATTR{idProduct}=="9039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Mi-2 (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Mi-2s (id2) (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="ff40", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Mi-2s (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="ff48", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Redmi 2 (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="ff60", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Xiaomi Redmi 2 2014811 (MTP) -ATTR{idVendor}=="2717", ATTR{idProduct}=="ff68", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acromag Inc. XO Learning Tablet (MTP+ADB) -ATTR{idVendor}=="16d5", ATTR{idProduct}=="8005", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Acromag Inc. XO Learning Tablet (MTP) -ATTR{idVendor}=="16d5", ATTR{idProduct}=="8006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SHARP Corporation SH930W -ATTR{idVendor}=="0489", ATTR{idProduct}=="c025", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SHARP Corporation SBM203SH -ATTR{idVendor}=="04dd", ATTR{idProduct}=="9661", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SHARP Corporation SH-06E -ATTR{idVendor}=="04dd", ATTR{idProduct}=="96ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# SHARP Corporation SHV35 AQUOS U -ATTR{idVendor}=="04dd", ATTR{idProduct}=="99d2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel One Touch 997D (MTP+ADB) -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel One Touch 997D (MTP) -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel/TCT 6010D/TCL S950 -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="0167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel 6030a -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="0168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel/Bouygues BS472 -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="904d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel OneTouch 5042D (MTP) -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="a00e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel OneTouch Idol 3 ID2 (MTP) -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="af00", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel OneTouch Idol 3 small (MTP) -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="af2a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel OneTouch Idol 3 (MTP) -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="af2b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Alcatel OneTouch 6034R -ATTR{idVendor}=="1bbb", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera Rise -ATTR{idVendor}=="0482", ATTR{idProduct}=="0571", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera Event -ATTR{idVendor}=="0482", ATTR{idProduct}=="0591", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera Torque Model E6715 -ATTR{idVendor}=="0482", ATTR{idProduct}=="059a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera Hydro Elite C6750 -ATTR{idVendor}=="0482", ATTR{idProduct}=="073c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera KYL22 -ATTR{idVendor}=="0482", ATTR{idProduct}=="0810", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera 302KC -ATTR{idVendor}=="0482", ATTR{idProduct}=="09fc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera DuraForce -ATTR{idVendor}=="0482", ATTR{idProduct}=="0979", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera KC-S701 -ATTR{idVendor}=="0482", ATTR{idProduct}=="09cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kyocera C6740N -ATTR{idVendor}=="0482", ATTR{idProduct}=="0a73", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# HiSense Sero 7 Pro -ATTR{idVendor}=="109b", ATTR{idProduct}=="9105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Hewlett-Packard Slate 7 4600 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="5c1d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Hewlett-Packard Slate 7 2800 -ATTR{idVendor}=="03f0", ATTR{idProduct}=="5d1d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Hewlett-Packard Slate 10 HD -ATTR{idVendor}=="03f0", ATTR{idProduct}=="7e1d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# MediaTek Inc MT5xx and MT6xx SoCs -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0050", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Bravis A401 Neo -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0c03", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# MediaTek Inc MT65xx -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# elephone p6000 -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# MediaTek Inc Elephone P8000 -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Jolla Sailfish (ID1) -ATTR{idVendor}=="2931", ATTR{idProduct}=="0a01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Jolla Sailfish (ID2) -ATTR{idVendor}=="2931", ATTR{idProduct}=="0a05", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Jolla Sailfish (ID3) -ATTR{idVendor}=="2931", ATTR{idProduct}=="0a07", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TCL Alcatel one touch 986+ -ATTR{idVendor}=="0451", ATTR{idProduct}=="d108", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Garmin Monterra -ATTR{idVendor}=="091e", ATTR{idProduct}=="2585", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Wacom Cintiq Companion Hybrid (MTP+ADB) -ATTR{idVendor}=="0531", ATTR{idProduct}=="2001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kurio 7S -ATTR{idVendor}=="1f3a", ATTR{idProduct}=="1006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# iRulu X1s -ATTR{idVendor}=="1f3a", ATTR{idProduct}=="1007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# DigiLand DL701Q -ATTR{idVendor}=="1f3a", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Krillin (MTP+ADB) -ATTR{idVendor}=="2a47", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Krillin (MTP) -ATTR{idVendor}=="2a47", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Aquaris M10 (MTP) -ATTR{idVendor}=="2a47", ATTR{idProduct}=="200d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Avila Cooler (MTP) -ATTR{idVendor}=="2a47", ATTR{idProduct}=="201d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Aquaris X5 (MTP) -ATTR{idVendor}=="2a47", ATTR{idProduct}=="3003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Aquarius E5-4G -ATTR{idVendor}=="2a47", ATTR{idProduct}=="7f10", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Aquarius X5 (MTP) (ID2) -ATTR{idVendor}=="2a47", ATTR{idProduct}=="7f11", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# bq Aquarius M5.5 -ATTR{idVendor}=="2a47", ATTR{idProduct}=="901b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Prestigio 5505 DUO -ATTR{idVendor}=="29e4", ATTR{idProduct}=="1103", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Prestigio 5504 DUO -ATTR{idVendor}=="29e4", ATTR{idProduct}=="1203", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Prestigio 3405 DUO -ATTR{idVendor}=="29e4", ATTR{idProduct}=="3201", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Prestigio Multipad Color 7.0 -ATTR{idVendor}=="29e4", ATTR{idProduct}=="b003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Megafon MFLogin3T -ATTR{idVendor}=="201e", ATTR{idProduct}=="42ab", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Haier CT715 -ATTR{idVendor}=="201e", ATTR{idProduct}=="a0c1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Gensis GT-7305 -ATTR{idVendor}=="040d", ATTR{idProduct}=="885c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Oppo Find 5 -ATTR{idVendor}=="22d9", ATTR{idProduct}=="2764", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Oppo Find 7 (ID 1) -ATTR{idVendor}=="22d9", ATTR{idProduct}=="2765", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Oppo X9006 -ATTR{idVendor}=="22d9", ATTR{idProduct}=="2773", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Oppo Find 7 (ID 2) -ATTR{idVendor}=="22d9", ATTR{idProduct}=="2774", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Gigabyte RCT6773W22 (MTP+ADB) -ATTR{idVendor}=="0414", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Gigabyte RCT6773W22 (MTP) -ATTR{idVendor}=="0414", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Meizu MX Phone (MTP) -ATTR{idVendor}=="2a45", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Meizu MX Phone (MTP+ADB) -ATTR{idVendor}=="2a45", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Caterpillar Cat S50 -ATTR{idVendor}=="04b7", ATTR{idProduct}=="88a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Caterpillar Cat S50 (2nd ID) -ATTR{idVendor}=="04b7", ATTR{idProduct}=="88aa", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Caterpillar Cat S40 -ATTR{idVendor}=="04b7", ATTR{idProduct}=="88b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Caterpillar Cat S60 -ATTR{idVendor}=="04b7", ATTR{idProduct}=="88c0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Pegatron Chagall (ADB) -ATTR{idVendor}=="1d4d", ATTR{idProduct}=="5035", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Pegatron Chagall -ATTR{idVendor}=="1d4d", ATTR{idProduct}=="5036", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Pegatron Hudl 2 -ATTR{idVendor}=="1d4d", ATTR{idProduct}=="504a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Yota Phone C9660 -ATTR{idVendor}=="2916", ATTR{idProduct}=="9039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Yota Phone -ATTR{idVendor}=="2916", ATTR{idProduct}=="9139", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Yota Phone 2 -ATTR{idVendor}=="2916", ATTR{idProduct}=="914d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Yota Phone 2 (ID2) -ATTR{idVendor}=="2916", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fly Evo Tech 4 -ATTR{idVendor}=="2970", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Wileyfox Swift -ATTR{idVendor}=="2970", ATTR{idProduct}=="2281", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Wileyfox Swift 2 -ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Kazam Trooper 650 4G -ATTR{idVendor}=="2970", ATTR{idProduct}=="9039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Megafon Login+ -ATTR{idVendor}=="1271", ATTR{idProduct}=="2012", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fly iq4415 era style 3 -ATTR{idVendor}=="2970", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fly iq449 -ATTR{idVendor}=="1782", ATTR{idProduct}=="4001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# YU Yureka Vodafone smart turbo 4 -ATTR{idVendor}=="1ebf", ATTR{idProduct}=="7f29", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# BenQ F5 -ATTR{idVendor}=="1d45", ATTR{idProduct}=="459d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TomTom Rider 40 -ATTR{idVendor}=="1390", ATTR{idProduct}=="5455", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# OUYA Videogame Console -ATTR{idVendor}=="2836", ATTR{idProduct}=="0010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# BLU Studio HD -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Cubot X17 -ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# OnePlus ONE A2001 -ATTR{idVendor}=="2a70", ATTR{idProduct}=="9011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# OnePlus OnePlus 2 A2005 -ATTR{idVendor}=="2a70", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Parrot Bebop Drone -ATTR{idVendor}=="19cf", ATTR{idProduct}=="5038", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# GoPro HERO3+ Black -ATTR{idVendor}=="2672", ATTR{idProduct}=="0011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# GoPro HERO -ATTR{idVendor}=="2672", ATTR{idProduct}=="000c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# GoPro HERO4 Silver -ATTR{idVendor}=="2672", ATTR{idProduct}=="000d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Gopro HERO4 Black -ATTR{idVendor}=="2672", ATTR{idProduct}=="000e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# GoPro HERO4 Session -ATTR{idVendor}=="2672", ATTR{idProduct}=="000f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# GoPro HERO+ -ATTR{idVendor}=="2672", ATTR{idProduct}=="0021", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# GoPro HERO5 Black -ATTR{idVendor}=="2672", ATTR{idProduct}=="0027", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# GoPro HERO5 Session -ATTR{idVendor}=="2672", ATTR{idProduct}=="0029", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Marshall London -ATTR{idVendor}=="2ad9", ATTR{idProduct}=="000b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fairphone Fairphone 2 -ATTR{idVendor}=="2ae5", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Fairphone Fairphone 2 OS -ATTR{idVendor}=="2ae5", ATTR{idProduct}=="9039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Allview Energy P5 -ATTR{idVendor}=="271d", ATTR{idProduct}=="4016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# BLU Studio Energy X 2 Phone -ATTR{idVendor}=="271d", ATTR{idProduct}=="4016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# BLU Studio Energy 2 -ATTR{idVendor}=="271d", ATTR{idProduct}=="4017", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Zuk Z1 -ATTR{idVendor}=="2b4c", ATTR{idProduct}=="1004", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Zuk Z1 (2nd ID) -ATTR{idVendor}=="2b4c", ATTR{idProduct}=="1005", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Letv X5001s -ATTR{idVendor}=="2b0e", ATTR{idProduct}=="1700", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Letv 1s -ATTR{idVendor}=="2b0e", ATTR{idProduct}=="1704", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Letv X800 (ID1) -ATTR{idVendor}=="2b0e", ATTR{idProduct}=="182c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Letv X800 (ID2) -ATTR{idVendor}=="2b0e", ATTR{idProduct}=="1830", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TP-Link Neffos C5 (MTP) -ATTR{idVendor}=="2357", ATTR{idProduct}=="0314", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TP-Link Neffos C5 MAX (MTP) -ATTR{idVendor}=="2357", ATTR{idProduct}=="031a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TP-Link Neffos Y5L (MTP) -ATTR{idVendor}=="2357", ATTR{idProduct}=="0320", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# TP-Link Neffos Y5 (MTP) -ATTR{idVendor}=="2357", ATTR{idProduct}=="0328", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Recon Instruments Jet -ATTR{idVendor}=="2523", ATTR{idProduct}=="d209", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Recon Instruments Snow2 HUD -ATTR{idVendor}=="2523", ATTR{idProduct}=="d109", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Nextbit Robin -ATTR{idVendor}=="2c3f", ATTR{idProduct}=="0001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" -# Isabella Her Prototype -ATTR{idVendor}=="0b20", ATTR{idProduct}=="ddee", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" - -# Autoprobe vendor-specific, communication and PTP devices -ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", PROGRAM="mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1" - -LABEL="libmtp_rules_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/70-debian-uaccess.rules b/linux/rootfs/board/usr/lib/udev/rules.d/70-debian-uaccess.rules deleted file mode 100644 index f94948c75a..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/70-debian-uaccess.rules +++ /dev/null @@ -1,22 +0,0 @@ -# this udev file should be used with udev 188 and newer -ACTION!="add|change", GOTO="u2f_end" - -# Yubico YubiKey -KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0113|0114|0115|0116|0120|0402|0403|0406|0407|0410", TAG+="uaccess" - -# Happlink (formerly Plug-Up) Security KEY -KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0", TAG+="uaccess" - -# Neowave Keydo and Keydo AES -KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1e0d", ATTRS{idProduct}=="f1d0|f1ae", TAG+="uaccess" - -# HyperSecu HyperFIDO -KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="096e|2ccf", ATTRS{idProduct}=="0880", TAG+="uaccess" - -# Feitian ePass FIDO -KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="096e", ATTRS{idProduct}=="0850", TAG+="uaccess" - -# JaCarta U2F -KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="24dc", ATTRS{idProduct}=="0101", TAG+="uaccess" - -LABEL="u2f_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/70-mouse.rules b/linux/rootfs/board/usr/lib/udev/rules.d/70-mouse.rules deleted file mode 100644 index 3ea743aff9..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/70-mouse.rules +++ /dev/null @@ -1,18 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="mouse_end" -KERNEL!="event*", GOTO="mouse_end" -ENV{ID_INPUT_MOUSE}=="", GOTO="mouse_end" - -# mouse::vp:name::* -KERNELS=="input*", ENV{ID_BUS}=="usb", \ - IMPORT{builtin}="hwdb 'mouse:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ - GOTO="mouse_end" -KERNELS=="input*", ENV{ID_BUS}=="bluetooth", \ - IMPORT{builtin}="hwdb 'mouse:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ - GOTO="mouse_end" -DRIVERS=="psmouse", SUBSYSTEMS=="serio", \ - IMPORT{builtin}="hwdb 'mouse:ps2::name:$attr{device/name}:'", \ - GOTO="mouse_end" - -LABEL="mouse_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/70-power-switch.rules b/linux/rootfs/board/usr/lib/udev/rules.d/70-power-switch.rules deleted file mode 100644 index e2855b50f7..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/70-power-switch.rules +++ /dev/null @@ -1,18 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -ACTION=="remove", GOTO="power_switch_end" - -SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch" -SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch" -SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="twl4030_pwrbutton", TAG+="power-switch" -SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="tps65217_pwr_but", TAG+="power-switch" -SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="* WMI hotkeys", TAG+="power-switch" -SUBSYSTEM=="input", KERNEL=="event*", \ - SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", ATTRS{keys}=="*,116|116,*|116|*,116,*", TAG+="power-switch" - -LABEL="power_switch_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/70-touchpad.rules b/linux/rootfs/board/usr/lib/udev/rules.d/70-touchpad.rules deleted file mode 100644 index 7bede02dec..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/70-touchpad.rules +++ /dev/null @@ -1,13 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="touchpad_end" -ENV{ID_INPUT}=="", GOTO="touchpad_end" -ENV{ID_INPUT_TOUCHPAD}=="", GOTO="touchpad_end" -KERNEL!="event*", GOTO="touchpad_end" - -# touchpad::vp:name::* -KERNELS=="input*", ENV{ID_BUS}!="", \ - IMPORT{builtin}="hwdb 'touchpad:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ - GOTO="touchpad_end" - -LABEL="touchpad_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/70-uaccess.rules b/linux/rootfs/board/usr/lib/udev/rules.d/70-uaccess.rules deleted file mode 100644 index 50dcd2e275..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/70-uaccess.rules +++ /dev/null @@ -1,81 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -ACTION=="remove", GOTO="uaccess_end" -ENV{MAJOR}=="", GOTO="uaccess_end" - -# PTP/MTP protocol devices, cameras, portable media players -SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:060101:*", TAG+="uaccess" - -# Digicams with proprietary protocol -ENV{ID_GPHOTO2}=="?*", TAG+="uaccess" - -# SCSI and USB scanners -ENV{libsane_matched}=="yes", TAG+="uaccess" - -# HPLIP devices (necessary for ink level check and HP tool maintenance) -ENV{ID_HPLIP}=="1", TAG+="uaccess" - -# optical drives -SUBSYSTEM=="block", ENV{ID_CDROM}=="1", TAG+="uaccess" -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", TAG+="uaccess" - -# Sound devices -SUBSYSTEM=="sound", TAG+="uaccess" \ - OPTIONS+="static_node=snd/timer", OPTIONS+="static_node=snd/seq" - -# ffado is an userspace driver for firewire sound cards -SUBSYSTEM=="firewire", ENV{ID_FFADO}=="1", TAG+="uaccess" - -# Webcams, frame grabber, TV cards -SUBSYSTEM=="video4linux", TAG+="uaccess" -SUBSYSTEM=="dvb", TAG+="uaccess" - -# IIDC devices: industrial cameras and some webcams -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", TAG+="uaccess" -SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", TAG+="uaccess" -# AV/C devices: camcorders, set-top boxes, TV sets, audio devices, and more -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", TAG+="uaccess" -SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", TAG+="uaccess" - -# DRI video devices -SUBSYSTEM=="drm", KERNEL=="card*|renderD*", TAG+="uaccess" - -# KVM -SUBSYSTEM=="misc", KERNEL=="kvm", TAG+="uaccess" - -# smart-card readers -ENV{ID_SMARTCARD_READER}=="?*", TAG+="uaccess" - -# (USB) authentication devices -ENV{ID_SECURITY_TOKEN}=="?*", TAG+="uaccess" - -# PDA devices -ENV{ID_PDA}=="?*", TAG+="uaccess" - -# Programmable remote control -ENV{ID_REMOTE_CONTROL}=="1", TAG+="uaccess" - -# joysticks -SUBSYSTEM=="input", ENV{ID_INPUT_JOYSTICK}=="?*", TAG+="uaccess" - -# color measurement devices -ENV{COLOR_MEASUREMENT_DEVICE}=="?*", TAG+="uaccess" - -# DDC/CI device, usually high-end monitors such as the DreamColor -ENV{DDC_DEVICE}=="?*", TAG+="uaccess" - -# media player raw devices (for user-mode drivers, Android SDK, etc.) -SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="uaccess" - -# software-defined radio communication devices -ENV{ID_SOFTWARE_RADIO}=="?*", TAG+="uaccess" - -# 3D printers, CNC machines, laser cutters, 3D scanners, etc. -ENV{ID_MAKER_TOOL}=="?*", TAG+="uaccess" - -LABEL="uaccess_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/71-seat.rules b/linux/rootfs/board/usr/lib/udev/rules.d/71-seat.rules deleted file mode 100644 index c5f922997d..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/71-seat.rules +++ /dev/null @@ -1,54 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -ACTION=="remove", GOTO="seat_end" - -TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat" -SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat" -SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat" -SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat", TAG+="master-of-seat" -SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", TAG+="master-of-seat" -SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat" - -# 'Plugable' USB hub, sound, network, graphics adapter -SUBSYSTEM=="usb", ATTR{idVendor}=="2230", ATTR{idProduct}=="000[13]", ENV{ID_AUTOSEAT}="1" - -# qemu (version 2.4+) has a PCI-PCI bridge (-device pci-bridge-seat) to group -# devices belonging to one seat. See: -# http://git.qemu.org/?p=qemu.git;a=blob;f=docs/multiseat.txt -SUBSYSTEM=="pci", ATTR{vendor}=="0x1b36", ATTR{device}=="0x000a", TAG+="seat", ENV{ID_AUTOSEAT}="1" - -# Mimo 720, with integrated USB hub, displaylink graphics, and e2i -# touchscreen. This device carries no proper VID/PID in the USB hub, -# but it does carry good ID data in the graphics component, hence we -# check it from the parent. There's a bit of a race here however, -# given that the child devices might not exist yet at the time this -# rule is executed. To work around this we'll trigger the parent from -# the child if we notice that the parent wasn't recognized yet. - -# Match parent -SUBSYSTEM=="usb", ATTR{idVendor}=="058f", ATTR{idProduct}=="6254", \ - ATTR{%k.2/idVendor}=="17e9", ATTR{%k.2/idProduct}=="401a", ATTR{%k.2/product}=="mimo inc", \ - ENV{ID_AUTOSEAT}="1", ENV{ID_AVOID_LOOP}="1" - -# Match child, look for parent's ID_AVOID_LOOP -SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \ - ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \ - IMPORT{parent}="ID_AVOID_LOOP" - -# Match child, retrigger parent -SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \ - ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \ - ENV{ID_AVOID_LOOP}=="", \ - RUN+="/bin/udevadm trigger --parent-match=%p/.." - -TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id" -TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}" - -SUBSYSTEM=="input", ATTR{name}=="Wiebetech LLC Wiebetech", RUN+="/bin/loginctl lock-sessions" - -LABEL="seat_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/73-special-net-names.rules b/linux/rootfs/board/usr/lib/udev/rules.d/73-special-net-names.rules deleted file mode 100644 index 5e470a3409..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/73-special-net-names.rules +++ /dev/null @@ -1,14 +0,0 @@ -# On Dell PowerEdge systems, the iDRAC7 and later support a USB Virtual NIC -# which terminates in the iDRAC. Help identify this with 'idrac' -ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", ATTRS{idVendor}=="413c", ATTRS{idProduct}=="a102", NAME="idrac" - -# On IBM systems the Integrated Management Module is reachable using a -# # USB Virtual NIC. -ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", \ - ATTRS{idVendor}=="04b3", ATTRS{idProduct}=="0325", NAME="ibmimm" - -# ibmveth devices' $DEVPATH number is tied to (virtual) hardware (slot id -# selected in the HMC), thus this provides a reliable naming (e. g. -# "/devices/vio/30000002/net/eth1"); we ignore the bus number, as -# there should only ever be one bus, and then remove leading zeros -ACTION=="add", SUBSYSTEM=="net", NAME=="", DRIVERS=="ibmveth", PROGRAM="/bin/sh -ec 'D=${DEVPATH#*/vio/}; D=${D%%%%/*}; D=${D#????}; D=${D#0}; D=${D#0}; D=${D#0}; D=${D#0}; echo ${D:-0}'", NAME="ibmveth$result" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/73-usb-net-by-mac.rules b/linux/rootfs/board/usr/lib/udev/rules.d/73-usb-net-by-mac.rules deleted file mode 100644 index 8969f59176..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/73-usb-net-by-mac.rules +++ /dev/null @@ -1,15 +0,0 @@ -# Use MAC based names for network interfaces which are directly or indirectly -# on USB and have an universally administered (stable) MAC address (second bit -# is 0). Don't do this when ifnames is disabled via kernel command line or -# customizing/disabling 99-default.link (or previously 80-net-setup-link.rules). - -IMPORT{cmdline}="net.ifnames" -ENV{net.ifnames}=="0", GOTO="usb_net_by_mac_end" - -ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \ - ATTR{address}=="?[014589cd]:*", \ - TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \ - TEST!="/etc/systemd/network/99-default.link", \ - IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}" - -LABEL="usb_net_by_mac_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/75-net-description.rules b/linux/rootfs/board/usr/lib/udev/rules.d/75-net-description.rules deleted file mode 100644 index 7e62f8b26b..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/75-net-description.rules +++ /dev/null @@ -1,14 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="net_end" -SUBSYSTEM!="net", GOTO="net_end" - -IMPORT{builtin}="net_id" - -SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" -SUBSYSTEMS=="usb", GOTO="net_end" - -SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" -SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci" - -LABEL="net_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/75-probe_mtd.rules b/linux/rootfs/board/usr/lib/udev/rules.d/75-probe_mtd.rules deleted file mode 100644 index 8848aeeaed..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/75-probe_mtd.rules +++ /dev/null @@ -1,7 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION!="add", GOTO="mtd_probe_end" - -KERNEL=="mtd*ro", IMPORT{program}="mtd_probe $devnode" - -LABEL="mtd_probe_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/78-sound-card.rules b/linux/rootfs/board/usr/lib/udev/rules.d/78-sound-card.rules deleted file mode 100644 index 04740e8b97..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/78-sound-card.rules +++ /dev/null @@ -1,89 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="sound", GOTO="sound_end" - -ACTION=="add|change", KERNEL=="controlC*", ATTR{../uevent}="change" -ACTION!="change", GOTO="sound_end" - -# Ok, we probably need a little explanation here for what the two lines above -# are good for. -# -# The story goes like this: when ALSA registers a new sound card it emits a -# series of 'add' events to userspace, for the main card device and for all the -# child device nodes that belong to it. udev relays those to applications, -# however only maintains the order between father and child, but not between -# the siblings. The control device node creation can be used as synchronization -# point. All other devices that belong to a card are created in the kernel -# before it. However unfortunately due to the fact that siblings are forwarded -# out of order by udev this fact is lost to applications. -# -# OTOH before an application can open a device it needs to make sure that all -# its device nodes are completely created and set up. -# -# As a workaround for this issue we have added the udev rule above which will -# generate a 'change' event on the main card device from the 'add' event of the -# card's control device. Due to the ordering semantics of udev this event will -# only be relayed after all child devices have finished processing properly. -# When an application needs to listen for appearing devices it can hence look -# for 'change' events only, and ignore the actual 'add' events. -# -# When the application is initialized at the same time as a device is plugged -# in it may need to figure out if the 'change' event has already been triggered -# or not for a card. To find that out we store the flag environment variable -# SOUND_INITIALIZED on the device which simply tells us if the card 'change' -# event has already been processed. - -KERNEL!="card*", GOTO="sound_end" - -ENV{SOUND_INITIALIZED}="1" - -IMPORT{builtin}="hwdb" -SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" -SUBSYSTEMS=="usb", GOTO="skip_pci" - -SUBSYSTEMS=="firewire", ATTRS{guid}=="?*", \ - ENV{ID_BUS}="firewire", ENV{ID_SERIAL}="$attr{guid}", ENV{ID_SERIAL_SHORT}="$attr{guid}", \ - ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{model}", \ - ENV{ID_VENDOR}="$attr{vendor_name}", ENV{ID_MODEL}="$attr{model_name}" -SUBSYSTEMS=="firewire", GOTO="skip_pci" - -SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" -LABEL="skip_pci" - -# Define ID_ID if ID_BUS and ID_SERIAL are set. This will work for both -# USB and firewire. -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="?*", ENV{ID_ID}="$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_USB_INTERFACE_NUM}" -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="", ENV{ID_ID}="$env{ID_BUS}-$env{ID_SERIAL}" - -IMPORT{builtin}="path_id" - -# The values used here for $SOUND_FORM_FACTOR and $SOUND_CLASS should be kept -# in sync with those defined for PulseAudio's src/pulse/proplist.h -# PA_PROP_DEVICE_FORM_FACTOR, PA_PROP_DEVICE_CLASS properties. - -# If the first PCM device of this card has the pcm class 'modem', then the card is a modem -ATTR{pcmC%nD0p/pcm_class}=="modem", ENV{SOUND_CLASS}="modem", GOTO="sound_end" - -# Identify cards on the internal PCI bus as internal -SUBSYSTEMS=="pci", DEVPATH=="*/0000:00:??.?/sound/*", ENV{SOUND_FORM_FACTOR}="internal", GOTO="sound_end" - -# Devices that also support Image/Video interfaces are most likely webcams -SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACES}=="*:0e????:*", ENV{SOUND_FORM_FACTOR}="webcam", GOTO="sound_end" - -# Matching on the model strings is a bit ugly, I admit -ENV{ID_MODEL}=="*[Ss]peaker*", ENV{SOUND_FORM_FACTOR}="speaker", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Ss]peaker*", ENV{SOUND_FORM_FACTOR}="speaker", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Hh]eadphone*", ENV{SOUND_FORM_FACTOR}="headphone", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Hh]eadphone*", ENV{SOUND_FORM_FACTOR}="headphone", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Hh]eadset*", ENV{SOUND_FORM_FACTOR}="headset", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Hh]eadset*", ENV{SOUND_FORM_FACTOR}="headset", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Hh]andset*", ENV{SOUND_FORM_FACTOR}="handset", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Hh]andset*", ENV{SOUND_FORM_FACTOR}="handset", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Mm]icrophone*", ENV{SOUND_FORM_FACTOR}="microphone", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Mm]icrophone*", ENV{SOUND_FORM_FACTOR}="microphone", GOTO="sound_end" - -LABEL="sound_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/80-debian-compat.rules b/linux/rootfs/board/usr/lib/udev/rules.d/80-debian-compat.rules deleted file mode 100644 index fb8477ff70..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/80-debian-compat.rules +++ /dev/null @@ -1,30 +0,0 @@ -# Debian specific udev rules for backwards compatibility - -# needed for old tape drivers, http://bugs.debian.org/657948 -SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN{builtin}+="kmod load sg" - -# device permissions -KERNEL=="mISDNtimer", GROUP="dialout" -KERNEL=="mwave", GROUP="dialout" -KERNEL=="nvram", GROUP="kmem", MODE="0640" -KERNEL=="pktcdvd", GROUP="cdrom", MODE="0644" -KERNEL=="lirc[0-9]*", GROUP="video" -KERNEL=="legousbtower*", MODE="0666" -KERNEL=="sonypi", MODE="0666" -KERNEL=="mmtimer", MODE="0644" -KERNEL=="sgi_*", MODE="0666" -KERNEL=="z90crypt", MODE="0666" - -# These rules will create symlinks for CD/DVD drives, to help old -# programs which are unable to automatically discover the devices. -# The first detected device gets the symlink, but this is not stable across -# reboots. -ENV{ID_CDROM_CD_RW}=="?*", \ - PROGRAM="/bin/sh -c 'ln -s %k /run/udev/link.cdrw 2>/dev/null; [ `readlink /run/udev/link.cdrw` = %k ]", \ - SYMLINK+="cdrw", OPTIONS+="link_priority=-100" -ENV{ID_CDROM_DVD}=="?*", \ - PROGRAM="/bin/sh -c 'ln -s %k /run/udev/link.dvd 2>/dev/null; [ `readlink /run/udev/link.dvd` = %k ]", \ - SYMLINK+="dvd", OPTIONS+="link_priority=-100" -ENV{ID_CDROM_DVD_RW}=="?*", \ - PROGRAM="/bin/sh -c 'ln -s %k /run/udev/link.dvdrw 2>/dev/null; [ `readlink /run/udev/link.dvdrw` = %k ]", \ - SYMLINK+="dvdrw", OPTIONS+="link_priority=-100" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/80-drivers.rules b/linux/rootfs/board/usr/lib/udev/rules.d/80-drivers.rules deleted file mode 100644 index 8551f47a4b..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/80-drivers.rules +++ /dev/null @@ -1,13 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="drivers_end" - -ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load $env{MODALIAS}" -SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}+="kmod load tifm_sd" -SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}+="kmod load tifm_ms" -SUBSYSTEM=="memstick", RUN{builtin}+="kmod load ms_block mspro_block" -SUBSYSTEM=="i2o", RUN{builtin}+="kmod load i2o_block" -SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}+="kmod load ppdev" -KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}+="kmod load sm_ftl" - -LABEL="drivers_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/80-ifupdown.rules b/linux/rootfs/board/usr/lib/udev/rules.d/80-ifupdown.rules deleted file mode 100644 index 053b235cc9..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/80-ifupdown.rules +++ /dev/null @@ -1,5 +0,0 @@ -# Allow rfkill for users in the netdev group -KERNEL=="rfkill", MODE="0664", GROUP="netdev" - -# Handle allow-hotplug interfaces -SUBSYSTEM=="net", ACTION=="add|remove", RUN+="ifupdown-hotplug" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/85-hwclock.rules b/linux/rootfs/board/usr/lib/udev/rules.d/85-hwclock.rules deleted file mode 100644 index 972e4aab3b..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/85-hwclock.rules +++ /dev/null @@ -1,4 +0,0 @@ -# Set the System Time from the Hardware Clock and set the kernel's timezone -# value to the local timezone when the kernel clock module is loaded. - -KERNEL=="rtc0", RUN+="/lib/udev/hwclock-set $root/$name" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/85-regulatory.rules b/linux/rootfs/board/usr/lib/udev/rules.d/85-regulatory.rules deleted file mode 100644 index e81d802e3a..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/85-regulatory.rules +++ /dev/null @@ -1,5 +0,0 @@ -# Runs CRDA for kernel wireless regulatory events. -# For more information see: -# http://wireless.kernel.org/en/developers/Regulatory/CRDA - -KERNEL=="regulatory*", ACTION=="change", SUBSYSTEM=="platform", RUN+="/sbin/crda" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/90-alsa-restore.rules b/linux/rootfs/board/usr/lib/udev/rules.d/90-alsa-restore.rules deleted file mode 100644 index 0280ae4aa5..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/90-alsa-restore.rules +++ /dev/null @@ -1,8 +0,0 @@ -ACTION=="add", SUBSYSTEM=="sound", KERNEL=="controlC*", KERNELS!="card*", TEST=="/usr/sbin", TEST=="/usr/share/alsa", GOTO="alsa_restore_go" -GOTO="alsa_restore_end" - -LABEL="alsa_restore_go" -TEST!="/etc/alsa/state-daemon.conf", TEST=="/usr/sbin/alsactl", RUN+="/usr/sbin/alsactl -E HOME=/run/alsa restore $attr{device/number}" -TEST=="/etc/alsa/state-daemon.conf", TEST=="/usr/sbin/alsactl", RUN+="/usr/sbin/alsactl -E HOME=/run/alsa nrestore $attr{device/number}" - -LABEL="alsa_restore_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/97-hid2hci.rules b/linux/rootfs/board/usr/lib/udev/rules.d/97-hid2hci.rules deleted file mode 100644 index 817a8698a7..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/97-hid2hci.rules +++ /dev/null @@ -1,31 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="hid2hci_end" -SUBSYSTEM!="usb*", GOTO="hid2hci_end" - -# Variety of Dell Bluetooth devices - match on a mouse device that is -# self powered and where a HID report needs to be sent to switch modes -# Known supported devices: 413c:8154, 413c:8158, 413c:8162 -ATTR{bInterfaceClass}=="03", ATTR{bInterfaceSubClass}=="01", ATTR{bInterfaceProtocol}=="02", \ - ATTRS{bDeviceClass}=="00", ATTRS{idVendor}=="413c", ATTRS{bmAttributes}=="e0", \ - RUN+="hid2hci --method=dell --devpath=%p", ENV{HID2HCI_SWITCH}="1" - -# Logitech devices -KERNEL=="hiddev*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[345abce]|c71[3bc]", \ - RUN+="hid2hci --method=logitech-hid --devpath=%p" -# Logitech, Inc. diNovo Edge Keyboard -KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c714", \ - RUN+="hid2hci --method=logitech-hid --devpath=%p" - -ENV{DEVTYPE}!="usb_device", GOTO="hid2hci_end" - -# When a Dell device recovers from S3, the mouse child needs to be repoked -# Unfortunately the only event seen is the BT device disappearing, so the mouse -# device needs to be chased down on the USB bus. -ATTR{bDeviceClass}=="e0", ATTR{bDeviceSubClass}=="01", ATTR{bDeviceProtocol}=="01", ATTR{idVendor}=="413c", \ - ENV{REMOVE_CMD}="/bin/udevadm trigger --action=change --subsystem-match=usb --property-match=HID2HCI_SWITCH=1" - -# CSR devices -ATTR{idVendor}=="0a12|0458|05ac", ATTR{idProduct}=="1000", RUN+="hid2hci --method=csr --devpath=%p" - -LABEL="hid2hci_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/15-i2c-modprobe.rules b/linux/rootfs/board/usr/lib/udev/rules.d/disabled/15-i2c-modprobe.rules deleted file mode 100644 index fe245e26b6..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/15-i2c-modprobe.rules +++ /dev/null @@ -1 +0,0 @@ -SUBSYSTEM=="i2c|spi", ENV{MODALIAS}=="?*", ENV{OF_NAME}=="?*", ENV{OF_COMPATIBLE_0}=="?*", RUN+="/usr/lib/raspberrypi-sys-mods/i2cprobe" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/73-seat-late.rules b/linux/rootfs/board/usr/lib/udev/rules.d/disabled/73-seat-late.rules deleted file mode 100644 index 901df750fd..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/73-seat-late.rules +++ /dev/null @@ -1,17 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -ACTION=="remove", GOTO="seat_late_end" - -ENV{ID_SEAT}=="", ENV{ID_AUTOSEAT}=="1", ENV{ID_FOR_SEAT}!="", ENV{ID_SEAT}="seat-$env{ID_FOR_SEAT}" -ENV{ID_SEAT}=="", IMPORT{parent}="ID_SEAT" - -ENV{ID_SEAT}!="", TAG+="$env{ID_SEAT}" - -TAG=="uaccess", ENV{MAJOR}!="", RUN{builtin}+="uaccess" - -LABEL="seat_late_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/80-net-name-slot.rules b/linux/rootfs/board/usr/lib/udev/rules.d/disabled/80-net-name-slot.rules deleted file mode 100644 index c5f1b3885b..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/80-net-name-slot.rules +++ /dev/null @@ -1,14 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION!="add", GOTO="net_name_slot_end" -SUBSYSTEM!="net", GOTO="net_name_slot_end" -NAME!="", GOTO="net_name_slot_end" - -IMPORT{cmdline}="net.ifnames" -ENV{net.ifnames}=="0", GOTO="net_name_slot_end" - -NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}" -NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}" -NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}" - -LABEL="net_name_slot_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/80-net-setup-link.rules b/linux/rootfs/board/usr/lib/udev/rules.d/disabled/80-net-setup-link.rules deleted file mode 100644 index 6e411a91f0..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/80-net-setup-link.rules +++ /dev/null @@ -1,13 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="net", GOTO="net_setup_link_end" - -IMPORT{builtin}="path_id" - -ACTION!="add", GOTO="net_setup_link_end" - -IMPORT{builtin}="net_setup_link" - -NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}" - -LABEL="net_setup_link_end" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/90-console-setup.rules b/linux/rootfs/board/usr/lib/udev/rules.d/disabled/90-console-setup.rules deleted file mode 100644 index 8cd746ddda..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/90-console-setup.rules +++ /dev/null @@ -1,3 +0,0 @@ -ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="/etc/console-setup/cached_setup_font.sh" - -ACTION=="add", SUBSYSTEM=="vc", KERNEL=="vcs[1-9]|vcs[1-9][0-9]", TEST=="/run/console-setup/font-loaded", RUN+="/etc/console-setup/cached_setup_terminal.sh %k" diff --git a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/99-systemd.rules b/linux/rootfs/board/usr/lib/udev/rules.d/disabled/99-systemd.rules deleted file mode 100644 index f985bc22cd..0000000000 --- a/linux/rootfs/board/usr/lib/udev/rules.d/disabled/99-systemd.rules +++ /dev/null @@ -1,71 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -ACTION=="remove", GOTO="systemd_end" - -SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*", TAG+="systemd" -KERNEL=="vport*", TAG+="systemd" - -SUBSYSTEM=="block", TAG+="systemd" -SUBSYSTEM=="block", ACTION=="add", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" - -# Ignore encrypted devices with no identified superblock on it, since -# we are probably still calling mke2fs or mkswap on it. -SUBSYSTEM=="block", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0" - -# add symlink to GPT root disk -SUBSYSTEM=="block", ENV{ID_PART_GPT_AUTO_ROOT}=="1", ENV{ID_FS_TYPE}!="crypto_LUKS", SYMLINK+="gpt-auto-root" -SUBSYSTEM=="block", ENV{ID_PART_GPT_AUTO_ROOT}=="1", ENV{ID_FS_TYPE}=="crypto_LUKS", SYMLINK+="gpt-auto-root-luks" -SUBSYSTEM=="block", ENV{DM_UUID}=="CRYPT-*", ENV{DM_NAME}=="root", SYMLINK+="gpt-auto-root" - -# Ignore raid devices that are not yet assembled and started -SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", TEST!="md/array_state", ENV{SYSTEMD_READY}="0" -SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0" - -# Ignore loop devices that don't have any file attached -SUBSYSTEM=="block", KERNEL=="loop[0-9]*", ENV{DEVTYPE}=="disk", TEST!="loop/backing_file", ENV{SYSTEMD_READY}="0" - -# Ignore nbd devices until the PID file exists (which signals a connected device) -SUBSYSTEM=="block", KERNEL=="nbd*", ENV{DEVTYPE}=="disk", TEST!="pid", ENV{SYSTEMD_READY}="0" - -# We need a hardware independent way to identify network devices. We -# use the /sys/subsystem/ path for this. Kernel "bus" and "class" names -# should be treated as one namespace, like udev handles it. This is mostly -# just an identification string for systemd, so whether the path actually is -# accessible or not does not matter as long as it is unique and in the -# filesystem namespace. -# -# http://cgit.freedesktop.org/systemd/systemd/tree/src/libudev/libudev-enumerate.c#n955 - -SUBSYSTEM=="net", KERNEL!="lo", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/net/devices/$name" -SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/bluetooth/devices/%k" - -SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_WANTS}+="bluetooth.target" -ENV{ID_SMARTCARD_READER}=="?*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="smartcard.target" -SUBSYSTEM=="sound", KERNEL=="card*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sound.target" - -SUBSYSTEM=="printer", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target" -SUBSYSTEM=="usb", KERNEL=="lp*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target" - -# Apply sysctl variables to network devices (and only to those) as they appear. -ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name" - -# Pull in backlight save/restore for all backlight devices and -# keyboard backlights -SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service" -SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service" - -# Pull in rfkill save/restore for all rfkill devices -SUBSYSTEM=="rfkill", ENV{SYSTEMD_RFKILL}="1", IMPORT{builtin}="path_id" -SUBSYSTEM=="misc", KERNEL=="rfkill", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-rfkill.socket" - -# Asynchronously mount file systems implemented by these modules as soon as they are loaded. -SUBSYSTEM=="module", KERNEL=="fuse", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount" -SUBSYSTEM=="module", KERNEL=="configfs", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount" - -LABEL="systemd_end" diff --git a/linux/rootfs/board/usr/lib/udev/scsi_id b/linux/rootfs/board/usr/lib/udev/scsi_id deleted file mode 100755 index 9c77396e5c..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/scsi_id and /dev/null differ diff --git a/linux/rootfs/board/usr/lib/udev/usb_modeswitch b/linux/rootfs/board/usr/lib/udev/usb_modeswitch deleted file mode 100755 index f10a805b4f..0000000000 --- a/linux/rootfs/board/usr/lib/udev/usb_modeswitch +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -# part of usb_modeswitch 2.5.0 -device_in() -{ - if [ ! -e /var/lib/usb_modeswitch/$1 ]; then - return 0 - fi - while read line - do - if [ $(expr "$line" : "$2:$3") != 0 ]; then - return 1 - fi - done >/dev/null - fi - fi - exit 0 - ;; -esac - -IFS='/' read -r p1 p2 </dev/null | /bin/grep -q upstart; then # Test if upstart is running - initctl emit --no-wait usb-modeswitch-upstart UMS_PARAM=$p2 -else - # only old distros, new udev will kill all subprocesses - exec 1<&- 2<&- 5<&- 7<&- - exec usb_modeswitch_dispatcher --switch-mode $p2 & -fi -exit 0 diff --git a/linux/rootfs/board/usr/lib/udev/v4l_id b/linux/rootfs/board/usr/lib/udev/v4l_id deleted file mode 100755 index a7d208ec89..0000000000 Binary files a/linux/rootfs/board/usr/lib/udev/v4l_id and /dev/null differ diff --git a/linux/rootfs/board/virt64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service b/linux/rootfs/board/virt64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service index 78022b590f..e69d303058 100644 --- a/linux/rootfs/board/virt64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service +++ b/linux/rootfs/board/virt64/rootfs_overlay/usr/lib/systemd/system/syslog-ng@.service @@ -1,12 +1,13 @@ [Unit] Description=System Logging Service -Requires=syslog.socket [Service] -ExecStart=/usr/sbin/syslog-ng -n -StandardOutput=null +ExecStart=/usr/sbin/syslog-ng -F +StandardOutput=journal +StandardError=journal +Restart=on-failure [Install] Alias=syslog.service WantedBy=multi-user.target - +Enabled=true \ No newline at end of file diff --git a/linux/usr/emiso_engine/daemon/container.cpp b/linux/usr/emiso_engine/daemon/container.cpp index 271116b30b..3d9e6feeb2 100644 --- a/linux/usr/emiso_engine/daemon/container.cpp +++ b/linux/usr/emiso_engine/daemon/container.cpp @@ -318,4 +318,30 @@ int Container::remove(unsigned contenerId) return ret; } +std::vector Container::retrieveLogs(unsigned contenerId, unsigned lineNr) +{ + std::vector lines; + + // Create the file path + std::string fileName = "/var/log/soo/me_" + std::to_string(contenerId) + ".log"; + + std::cout << "[DEBUG] Logfile name: " << fileName << std::endl; + + // Read the file + std::ifstream file(fileName); + + if (!file.is_open()) { + std::cerr << "Error opening file: " << fileName << std::endl; + return lines; // return empty vector if file couldn't be opened + } + + std::string line; + while (std::getline(file, line) && lineNr-- > 0) { + lines.push_back(line); + } + + file.close(); + return lines; +} + } // emiso diff --git a/linux/usr/emiso_engine/daemon/container.hpp b/linux/usr/emiso_engine/daemon/container.hpp index 3f46cc83c4..94bbc65c11 100644 --- a/linux/usr/emiso_engine/daemon/container.hpp +++ b/linux/usr/emiso_engine/daemon/container.hpp @@ -21,6 +21,7 @@ #include #include +#include namespace emiso { @@ -55,6 +56,8 @@ namespace emiso { int unpause(unsigned contenerId); int remove(unsigned contenerId); + std::vector retrieveLogs(unsigned contenerId, unsigned lineNr); + private: std::string meToDockerState(int meState); uint64_t createdTime(); diff --git a/linux/usr/emiso_engine/daemon/daemon.cpp b/linux/usr/emiso_engine/daemon/daemon.cpp index de650525b0..7477e10005 100644 --- a/linux/usr/emiso_engine/daemon/daemon.cpp +++ b/linux/usr/emiso_engine/daemon/daemon.cpp @@ -31,10 +31,10 @@ Daemon* Daemon::getInstance() { if (_daemon == nullptr) { - _daemon = new Daemon(); - } + _daemon = new Daemon(); + } return _daemon; } -} // namespace emiso \ No newline at end of file +} // namespace emiso diff --git a/linux/usr/emiso_engine/webserver/container/container.cpp b/linux/usr/emiso_engine/webserver/container/container.cpp index 4afec6d989..5fd78f8177 100644 --- a/linux/usr/emiso_engine/webserver/container/container.cpp +++ b/linux/usr/emiso_engine/webserver/container/container.cpp @@ -36,6 +36,7 @@ namespace emiso { _unpauseHandler = new UnpauseHandler(daemon); _removeHandler = new RemoveHandler(daemon); _inspectHandler = new InspectHandler(daemon); + _logsHandler = new LogsHandler(daemon); _server->register_resource(path + "/json", _listHandler); _server->register_resource("/v[1-9]+.[0-9]+" + path + "/json", _listHandler); @@ -62,6 +63,9 @@ namespace emiso { _server->register_resource(path + "/{id|[0-9]+}/json", _inspectHandler); _server->register_resource("/v[1-9]+.[0-9]+" + path + "/{id|[0-9]+}/json", _inspectHandler); + + _server->register_resource(path + "/{id|[0-9]+}/logs", _logsHandler); + _server->register_resource("/v[1-9]+.[0-9]+" + path + "/{id|[0-9]+}/logs", _logsHandler); } ContainerApi::~ContainerApi() {} diff --git a/linux/usr/emiso_engine/webserver/container/container.hpp b/linux/usr/emiso_engine/webserver/container/container.hpp index 09e72dc564..2b1c4cfd87 100644 --- a/linux/usr/emiso_engine/webserver/container/container.hpp +++ b/linux/usr/emiso_engine/webserver/container/container.hpp @@ -28,6 +28,7 @@ #include "../../daemon/daemon.hpp" #include "container_inspect.hpp" +#include "container_logs.hpp" namespace emiso { namespace container { @@ -386,6 +387,7 @@ namespace container { RestartHandler *_restartHandler; RemoveHandler *_removeHandler; InspectHandler *_inspectHandler; + LogsHandler *_logsHandler; }; } // container diff --git a/linux/usr/emiso_engine/webserver/container/container_logs.hpp b/linux/usr/emiso_engine/webserver/container/container_logs.hpp new file mode 100644 index 0000000000..b1ffedc611 --- /dev/null +++ b/linux/usr/emiso_engine/webserver/container/container_logs.hpp @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2024 Jean-Pierre Miceli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef EMISO_CONTAINER_LOGS_H +#define EMISO_CONTAINER_LOGS_H + +namespace emiso { +namespace container { + +class LogsHandler : public httpserver::http_resource { + public: + LogsHandler(Daemon *daemon) : _daemon(daemon) {}; + + const std::shared_ptr render_GET(const httpserver::http_request &req) { + // std::string payload_str = ""; + // Json::Value payloadJson; + + std::cout << "[WEBERVER] '" << req.get_path() << "' (" << req.get_method() << ") called" << std::endl; + + // == Retrieve container ID from the request path == + int containerId = stoi(req.get_arg("id")); + int lineNr = stoi(req.get_arg("tail")); + + std::cout << "container ID: " << containerId << std::endl; + + // == Retrieve QUERY params == + for (const auto& arg : req.get_args()) { + std::cout << "param: " << arg.first << ", value: " << arg.second << std::endl; + } + + std::vector lines; + lines = _daemon->container.retrieveLogs(containerId, lineNr); + + std::string message; + for (int i = 0; i < lines.size(); i++) { + message += lines[i] + "\n"; + } + + auto response = std::make_shared(message, + httpserver::http::http_utils::http_ok, "application/json"); + return response; + } + + private: + Daemon *_daemon; + }; + + +} // container +} // emiso + +#endif // EMISO_CONTAINER_LOGS_H \ No newline at end of file diff --git a/so3/ci/do_patch.sh b/so3/ci/do_patch.sh deleted file mode 100755 index e366994d6f..0000000000 --- a/so3/ci/do_patch.sh +++ /dev/null @@ -1,4 +0,0 @@ -cd .. -diff -x "config" -x "scripts" -x "*.o" -x ".*" \ - -x "so3_ci.patch" -x "generated" -x "*.s" -x "sdcard*" -Naru ../base/so3 . > so3_ci.patch - diff --git a/so3/usr/lib/libc/include/asm-aarch64/socket.h b/so3/usr/lib/libc/include/asm-aarch64/socket.h deleted file mode 100644 index 6187f49b09..0000000000 --- a/so3/usr/lib/libc/include/asm-aarch64/socket.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef _ASMARM_SOCKET_H -#define _ASMARM_SOCKET_H -#include -/* For setsockopt(2) */ -#define SOL_SOCKET 1 -#define SO_DEBUG 1 -#define SO_REUSEADDR 2 -#define SO_TYPE 3 -#define SO_ERROR 4 -#define SO_DONTROUTE 5 -#define SO_BROADCAST 6 -#define SO_SNDBUF 7 -#define SO_RCVBUF 8 -#define SO_SNDBUFFORCE 32 -#define SO_RCVBUFFORCE 33 -#define SO_KEEPALIVE 9 -#define SO_OOBINLINE 10 -#define SO_NO_CHECK 11 -#define SO_PRIORITY 12 -#define SO_LINGER 13 -#define SO_BSDCOMPAT 14 -/* To add :#define SO_REUSEPORT 15 */ -#define SO_PASSCRED 16 -#define SO_PEERCRED 17 -#define SO_RCVLOWAT 18 -#define SO_SNDLOWAT 19 -#define SO_RCVTIMEO 20 -#define SO_SNDTIMEO 21 -/* Security levels - as per NRL IPv6 - don't actually do anything */ -#define SO_SECURITY_AUTHENTICATION 22 -#define SO_SECURITY_ENCRYPTION_TRANSPORT 23 -#define SO_SECURITY_ENCRYPTION_NETWORK 24 -#define SO_BINDTODEVICE 25 -/* Socket filtering */ -#define SO_ATTACH_FILTER 26 -#define SO_DETACH_FILTER 27 -#define SO_PEERNAME 28 -#define SO_TIMESTAMP 29 -#define SCM_TIMESTAMP SO_TIMESTAMP -#define SO_ACCEPTCONN 30 -#define SO_PEERSEC 31 -#define SO_PASSSEC 34 -#endif /* _ASM_SOCKET_H */ diff --git a/so3/usr/lib/libc/include/asm-aarch64/sockios.h b/so3/usr/lib/libc/include/asm-aarch64/sockios.h deleted file mode 100644 index c238e77b16..0000000000 --- a/so3/usr/lib/libc/include/asm-aarch64/sockios.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __ARCH_ARM_SOCKIOS_H -#define __ARCH_ARM_SOCKIOS_H -/* Socket-level I/O control calls. */ -#define FIOSETOWN 0x8901 -#define SIOCSPGRP 0x8902 -#define FIOGETOWN 0x8903 -#define SIOCGPGRP 0x8904 -#define SIOCATMARK 0x8905 -#define SIOCGSTAMP 0x8906 /* Get stamp */ - -#endif diff --git a/so3/usr/src/stress/lvgl_perf.h b/so3/usr/src/stress/lvgl_perf.h deleted file mode 100644 index 23170ee000..0000000000 --- a/so3/usr/src/stress/lvgl_perf.h +++ /dev/null @@ -1,11 +0,0 @@ - - -#include - -#define LVGL_BUF_SIZE (256 * 256) - -/* Framebuffer ioctl commands. */ - -#define IOCTL_FB_HRES 1 -#define IOCTL_FB_VRES 2 -#define IOCTL_FB_SIZE 3 diff --git a/st b/st index 73081f0b51..496133c5a6 100755 --- a/st +++ b/st @@ -43,9 +43,8 @@ else -M virt -cpu cortex-a15 \-device virtio-blk-device,drive=hd0 \ -drive if=none,file=filesystem/sdcard.img.virt32,id=hd0,format=raw,file.locking=off \ -m 1024 \ - -kernel so3/u-boot/u-boot \ - -netdev tap,id=n1,script=scripts/qemu-ifup.sh,downscript=scripts/qemu-ifdown.sh \ - -device virtio-net-device,netdev=n1,mac=${QEMU_MAC_ADDR} \ + -kernel ME/work/so3/u-boot/u-boot \ + -net tap,script=scripts/qemu-ifup.sh,downscript=scripts/qemu-ifdown.sh -net nic,macaddr=${QEMU_MAC_ADDR} \ -nographic \ -gdb tcp::${GDB_PORT} diff --git a/target/bbb.its b/target/bbb.its index 1a116b6661..835a735e4f 100644 --- a/target/bbb.its +++ b/target/bbb.its @@ -30,6 +30,7 @@ arch = "arm"; os = "linux"; compression = "none"; +<<<<<<< HEAD:target/bbb.its load = <0x80008000>; entry = <0x80008000>; }; @@ -37,6 +38,15 @@ fdt_linux { description = "Linux device tree blob"; data = /incbin/("../linux/linux/arch/arm/boot/dts/am335x-boneblack.dtb"); +======= + load = <0x01008000>; + entry = <0x01008000>; + }; + + fdt { + description = "SO3 device tree blob"; + data = /incbin/("../so3/dts/rpi4.dtb"); +>>>>>>> d0f96911b1 (align with main SO3):so3/target/rpi4_so3_standalone.its type = "flat_dt"; arch = "arm"; compression = "none"; @@ -47,10 +57,18 @@ configurations { default = "conf_linux"; +<<<<<<< HEAD:target/bbb.its conf_linux { description = "Linux on BeagleBoneBlack"; kernel = "linux"; fdt = "fdt_linux"; +======= + conf_so3 { + description = "SO3 on Raspberry Pi 4"; + kernel = "so3"; + fdt = "fdt"; + ramdisk = "ramfs"; +>>>>>>> d0f96911b1 (align with main SO3):so3/target/rpi4_so3_standalone.its }; }; };