We create a virtual USB drive in the computer. Create a virtual USB flash drive on your computer Create an emulator for a usb device under windows

The Olof Lagerkvist project is an excellent program for emulating disks, but since disks can emulate everyone, but not everyone can boast of creating a USB flash drive or floppy disk. Disks are created in virtual memory, physically they can be unloaded into file images. After installation, the program is available from the PC control panel.

Click "OK" all the virtual image is ready.

Image
The image can be saved and mounted as needed. Where does it come in handy? For example, for the lazy, you can upload certificates for CryptoPro to such a virtual flash drive.)) Or use it as a disk in RAM to store the cache, paging file and other things.
There is also an alternative GUI -

Automatic connection:
echo off
rem to autoload for automatic mounting
c: \ WINDOWS \ system32 \ imdisk.exe -a -f "% PROGRAMFILES% \ flash.img" -m f: -o rem

Some command line options:

imdisk.exe -e -s 300M -m B: - increase disk B by 300 MB

imdisk -a -t file -o ro -m y: -f C: \ Boot.img- mount the Boot.img image with drive Y, read only

imdisk -a -t file -m y: -f C: \ Boot.img- mount the Boot.img image with drive Y, read / write only

imdisk -d -m y: - unmount drive Y

imdisk -a -s 150M -m #: -p "/ fs: ntfs / y / q / v: imdisk- create a disk with a size of 150 MB, the first free letter of the disk, formatting in NTFS, imdisk disk label

imdisk -a -s 10% -m #: -p "/ fs: ntfs / y / q / v: imdisk- the same as the previous one, only the size is indicated as 10 percent of free memory.

imdisk -a -s -500M -m #: -p "/ fs: ntfs / y / q / v: imdisk- the same as the previous one, only the size is indicated with a minus sign, that is, equal to the amount of free memory minus the specified size. With 1200 MB of free memory, the disk size will become 1200-500 = 700 MB

imdisk.exe -a -t proxy -o ip -f 127.0.0.1:80 -m Z:- use with a server, found on the internet, in fact did not check.

A - Wirt connection. disk.

D - disable virtual. disk.

E - editing virtual. disk.

_________________________

B - specify the offset, that is, the beginning of data on the disk, is indicated for disks created in different programs, in the images of which you need to skip the initial attributes in the file.

S is the size of the virtual disk. Size is the number of bytes unless the suffix is ​​added a (auto), b (512 byte blocks), k (thousand bytes), m (million bytes), g (billion bytes), t (trillion bytes), K (kilobytes) , M (megabyte), G (gigabyte), or T (terabyte). Thousand bytes and kilobytes differ in that there are 1024 bytes in a kilobyte, not 1000. For example. -s 150M or -s 10% - 10 percent of free memory. Parameter -500M - with a minus sign defines the size of the created disk as the amount of free memory minus the specified size.

O - set options, applies in conjunction with the options below

ro - read only

rw - read / write

rem - install as a removable disk (flash drive). This determines disk properties, caching, and more.

fix - set as a permanent, fixed disk (as opposed to rem)

cd - create a virtual CD-ROM / DVD-ROM.

fd - create a floppy disk. The default for sizes 160K, 180K, 320K, 360K, 640K, 720K, 820K, 1200K, 1440K, 1680K, 1722K, 2880K, 123264K or 234752K.

hd - create a hard partition.

ip - parameter for connecting to a proxy server.

comm - connects to a memory server via a COM port.

________________

M - Defines the drive letter. For example -m B: or -m y: or -m #: is the first free drive letter.

F - file name virtual. drive, for example -f C: \ Boot.img or -f \\ server \ share \ image.bin or -F \ Device \ Harddisk0 \ Partition1 \ image.bin- the last, when a drive letter is not assigned and the definition is by the hard number, the number of the partition (logical disk) and then the real path.

The development of various devices based on microcontrollers is an occupation worthy of a real computer geek. Undoubtedly, a useful feature of any gadget will be a USB interface for connecting to a computer. But what if the AVR chip doesn't have USB hardware support?

V-USB: size matters

When developing your own gadget, the problem of connecting it to a computer often arises. I must say that LPT and COM ports are now exotic on PC motherboards, not to mention laptops, for which these interfaces disappeared a long time ago. Therefore, modern computers have practically no alternatives to the USB interface.

If the resources of the chip are used one hundred percent, then it is better to immediately look towards devices with hardware support for the universal serial bus (such microcontrollers are present in the line of any manufacturer). In other cases, you can use a software USB.

For Atmel microcontrollers, there is a wonderful V-USB project that offers a software implementation of the low speed USB 1.1 device. The V-USB code will work on any AVR device that has at least 2KB Flash and 128 Bytes of RAM, clocked at 12; 12.8; 15; 16; 16.8 or 20 MHz.

The use of the product is possible both under the open source GPL license, and on a commercial basis. In order to develop your own USB devices, you usually also need to buy something like a license. But the guys from V-USB took care of this too, having acquired a pair of Vendor ID - Product ID and allowing anyone to use them.

The hardware connection for connecting the USB bus to the microcontroller is very simple. If the device does not consume too much, then it can be powered directly from the bus (it is believed that the computer's USB power line is capable of delivering current up to 500 mA). Since the data lines (D + and D–) use a 3.6V signal level, in addition to current limiting resistors, Zener diodes are needed to match the 5V logic on the chip. To indicate the type of connection, you need to "pull up" the supply voltage through a resistance of 1.5 kOhm to the line D–.

An alternative option for pairing via USB is to reduce the supply voltage of the controller by means of an appropriate stabilization microcircuit or just a pair of diodes. The latest schematic can be found on the V-USB project website.

USBtiny programmer

There are many different programmers available for AVR microcontrollers. USBtiny is mentioned here, in part, because it contains a software implementation of USB, similar to V-USB. The scheme of this programmer is simple: version 2 contains two microcircuits, and the first version contains only one (the ATtiny2313 chip itself). Thanks to the detailed description on the website and simple accessories, the device is easy to make even for a beginner. USBtiny is compatible with the popular avrdude program used for programming AVR microcontrollers.

The only problem is loading the firmware into the programmer chip - for this you need ... a programmer. If you have a computer with an LPT port, then you can make one of the options FBPRG aka "five wires", which is

Preparing the sled

The software tools required to implement the simplest USB gadget firmware are extremely ascetic: the gcc-avr compiler, the avr-libc library, the avrdude programmer and the binutils set for AVR. On Debian / Ubuntu, everything you need is installed with one command:

$ sudo apt-get install avrdude binutils-avr gcc-avr avr-libc

On the vast expanses of the Internet, it is easy to find a very detailed manual on V-USB and libusb (in English). According to the manual, to add USB support to the project, you will need the usbdrv folder from the archive with the latest version of V-USB. At the root of this folder is the usbconfig-prototype.h configuration template. You need to make a copy of this file and name it usbconfig.h. Next - fix usbconfig.h, indicating the port (D), the lines of which will be used for I / O, directly the line numbers D + (2) and D– (3), as well as the frequency (12 MHz) at which the chip operates (ATtiny2313 ):

#define USB_CFG_IOPORTNAME D #define USB_CFG_DMINUS_BIT 3 #define USB_CFG_DPLUS_BIT 2 #define USB_CFG_CLOCK_KHZ 12000

You do not need to change the manufacturer and device numeric IDs to use the V-USB device license. But the symbolic names can be chosen to your liking (they will allow you to distinguish between several V-USB devices connected to the same computer):

#define USB_CFG_VENDOR_ID 0xc0, 0x16 #define USB_CFG_DEVICE_ID 0xdc, 0x05 #define USB_CFG_VENDOR_NAME "n", "e", "t", "s", "4", "g", "e", "e", "" , "s", ".", "c", "o", "m" #define USB_CFG_VENDOR_NAME_LEN 14 #define USB_CFG_DEVICE_NAME "U", "S", "B", "e", "x", "a" , "m", "p", "l", "e" #define USB_CFG_DEVICE_NAME_LEN 10

Various gadgets

Do you have an idea for a device? Do not rush to solder and code, but look, perhaps someone has already done this. If you can't use ready-made schemes and sources, then at least you won't have to start from scratch.

For example, the V-USB project, thanks to its licensing policy, has accumulated a decent base of ready-made (including free distribution) solutions. Here you can find various implementations of keyboards, USB adapters for joysticks, gamepads (including rare ones, for example SNES / NES, Nintendo 64, ZX Spectrum joystick, Sony PlayStation 1/2) and the like. DMX adapters, virtual COM and UART ports, i2c, Servo, DCF77, IR wireless interfaces - everything that will help you connect more new devices to your PC. Loggers, platforms for sensors and sensors, adapters for LCD displays, programmers and loaders can also be useful on the farm.

The program for the chip is elementary!

When communicating via the USB bus, the computer is the main device that periodically sends control request messages. The controller, respectively, is a slave and must respond to requests. The format of the control message is determined by the usbRequest_t structure from the usbdrv.h file:

Typedef struct usbRequest (uchar bmRequestType; uchar bRequest; usbWord_t wValue; usbWord_t wIndex; usbWord_t wLength;) usbRequest_t;

Let's create a main.c file at the same level as the usbdrv folder and describe the necessary header files, definitions and variables in it:

#include #include #include #include "usbdrv.h" #define F_CPU 12000000L // MK frequency #include #define DATA_OUT 1 // Send command #define DATA_IN 2 // Receive command // Buffer static uchar replyBuf = "Hello World!"; static uchar dataLength = 0, dataReceived = 0;

In main.c, override the usbFunctionSetup function, which is called automatically when a new request is received:

USB_PUBLIC uchar usbFunctionSetup (uchar data) (usbRequest_t * rq = (void *) data; switch (rq-> bRequest) (case DATA_OUT: // Process data sending command usbMsgPtr = replyBuf; // Specify buffer return sizeof (replyBuf); / / Return the size of the buffer case DATA_IN: // Processing the command to receive data dataLength = (uchar) rq-> wLength.word; // Get the length of dataReceived = 0; // There will be many calls to usbFunctionWrite if (dataLength> sizeof (replyBuf)) // Overflow check dataLength = sizeof (replyBuf); return USB_NO_MSG; // Return 255) return 0;)

As you can see from the listing, the easiest way to send data to the computer is to set usbFunctionSetup to the value of the usbMsgPtr pointer to the RAM buffer (replyBuf) where the data is located, and then return its length. The buffer size should not exceed 254 bytes. For the ATtiny2313 with its 128 bytes of RAM, this is enough. For more functional devices, there is a second way - overriding the usbFunctionRead function.

To get the data, first, you need to extract the message length from the wLength field of the request in the usbFunctionSetup function and store it in the global dataLength variable. Secondly, in main.c, you need to override the usbFunctionWrite function, designed to process the received data and called automatically (and obviously several times) if usbFunctionSetup returns USB_NO_MSG (255):

USB_PUBLIC uchar usbFunctionWrite (uchar * data, uchar len) (uchar i; // Save the received chunk of data to the buffer for (i = 0; dataReceived< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

Actually, the usbFunctionWrite function fills the replyBuf buffer with the received data.

By the way, for this method to work, you need to make changes to usbconfig.h:

#define USB_CFG_IMPLEMENT_FN_WRITE 1

Well, the last function of the firmware is main:

Int main () (usbInit (); // Initialize USB usbDeviceConnect (); // Connect device sei (); // Enable interrupts // Wait for control messages in an infinite loop while (1) usbPoll (); return 0;)

Using USART / UART

A good alternative to software / hardware USB is the use of the popular USART / UART interface in the chip with a third-party converter of this protocol to USB, which can be done, for example, based on the FT232RL chip.

Libusb: neither dressed nor nude

You ask: do you have to write a driver for the computer operating system to connect a USB device? If you use libusb, you can do without implementing a full-fledged kernel module. Libusb is an open source library that allows you to quickly program, firstly, finding a device on the bus, and secondly, exchanging data with it.

For Linux, the library and necessary header files can be obtained from the source codes. Better to use the standard repository of your distribution. For Debian / Ubuntu, for example, like this:

$ sudo apt-get install libusb-dev

There is also a libusb port for Windows - libusb-win32. Contrary to the name of the project, 64-bit operating systems from Microsoft are also supported (starting from version 1.2.0.0).

But libusb is a separate topic of conversation. I think you are familiar with PC programming and you can figure it out yourself. Therefore, I will be brief. Create a file usbtest.c and start filling it with content. First, the required header files and definitions:

#include [...] // For a computer, the meaning of the commands is reversed, // but the designations remain the same #define DATA_OUT 1 #define DATA_IN 2

UsbOpenDevice function to initialize the device:

Usb_init (); // Initialize USB usb_find_busses (); // Find the buses usb_find_devices (); // Find devices // Go through all buses for (bus = usb_get_busses (); bus; bus = bus-> next) (// Go through all devices on the bus for (dev = bus-> devices; dev; dev = dev-> next) (// If vendor and product IDs do not match ... if (dev-> descriptor.idVendor! = vendor || dev-> descriptor.idProduct! = product) continue; // ... skip this iteration // Try to get the device descriptor if (! (Handle = usb_open (dev))) (fprintf (stderr, "% s \ n", usb_strerror ()); continue;) return handle; // Return the descriptor)) // The device was not found return NULL;

As you can see, the parameters of usbOpenDevice are the numeric identifiers of the manufacturer and device. If the device is present on the bus, its descriptor is returned. If there are several devices on the V-USB, you will have to add a check for the symbolic names of the vendor and product.

And the main function of the usbtest console utility:

Int main (int argc, char ** argv) (// Device handle usb_dev_handle * handle = NULL; int nBytes = 0; char buffer; // Looking for device handle = usbOpenDevice (0x16C0, 0x05DC); if (handle == NULL) (fprintf (stderr, "Could not find USB device! \ n"); exit (1);) // Out argument - get data from the chip if (strcmp (argv, "out") == 0) (nBytes = usb_control_msg (handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, DATA_OUT, 0, 0, (char *) buffer, sizeof (buffer), 5000); printf ("Got% d bytes:% s \ n", nBytes, buffer); // In argument - send a string (next argument)) else if (strcmp (argv, "in") == 0 && argc> 2) (nBytes = usb_control_msg (handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, DATA_INg, 0, 0, argc strlen (argv) +1, 5000);) if (nBytes< 0) fprintf(stderr, "%s\n", usb_strerror()); usb_close(handle); // Закрыть дескриптор return 0; }

Here the usb_control_msg function, which is declared in the usb.h include file, rules the ball. It has a bunch of parameters and actually creates those control messages, the processing of which is implemented in the firmware of the microcontroller.

Proteus resting

The popularly beloved Proteus ISIS wiring simulator is useless when designing devices with software implementation of USB. Its USB emulator only supports chips with hardware support for Universal Serial Bus (such as AT90USB646 or AT90USB1286).

We collect, flash, test

Below is a small but very useful Makefile, with the help of which the make command from main.c and usbtest.c can easily get the firmware for the chip - main.hex and the usbtest utility binary:

CC = avr-gcc OBJCOPY = avr-objcopy CFLAGS = -Wall -Os -Iusbdrv -mmcu = attiny2313 OBJFLAGS = -j .text -j .data -O ihex OBJECTS = usbdrv / usbdrv.o usbdrv / oddrvug. .o main.o CMDLINE = usbtest # Purpose: build everything all: main.hex $ (CMDLINE) # Build utility for computer $ (CMDLINE): usbtest.c gcc -I ./libusb/include -L ./libusb/lib / gcc -O -Wall usbtest.c -o usbtest -lusb # Clean the project from the binary clean: $ (RM) * .o * .hex * .elf usbdrv / *. o # Get the firmware file from the elf file%. hex:% .elf $ (OBJCOPY) $ (OBJFLAGS) $< [email protected]# Building elf file main.elf: $ (OBJECTS) $ (CC) $ (CFLAGS) $ (OBJECTS) -o [email protected]# Build V-USB $ (OBJECTS) library files: usbdrv / usbconfig.h # C into object code% .o:% .c $ (CC) $ (CFLAGS) -c $< -o [email protected]# asm to object code% .o:% .S $ (CC) $ (CFLAGS) -x assembler-with-cpp -c $< -o [email protected]

To upload the firmware into the microcontroller using the usbtiny programmer, we type the command:

$ sudo avrdude -p t2313 -c usbtiny -e -U flash: w: main.hex: i -U lfuse: w: 0xef: m

In avrdude, fuses are not very clear, but they can be easily calculated in one of the online calculators.


We connect the device to the computer and check how it works (usbtest with the out parameter reads the string, in - writes the specified string to the chip buffer):

$ sudo ./usbtest in all_ok $ sudo ./usbtest out

A spoon of tar

Soft USB is not a panacea. Software implementations usually have a number of simplifications, such as the absence of checksum and channel symmetry checks, which negatively affects noise immunity. Also, usually software libraries use low-speed USB modes. And the code of the USB-library "eats" the already small memory of the chip.

Peeping ...

At the logic level, the USB protocol is essentially a multi-layer packet data transfer. It is easy to verify this (and at the same time learn a lot of interesting things about USB) using the Wireshark network protocol analyzer. You must first download the USB monitor driver:

$ sudo modprobe usbmon

Now you can select USB buses in the list of Wireshark interfaces. You can see the device bus number, for example, in the logs.

Conclusion

Hopefully, after you've learned how to transfer data between a computer and an AVR microcontroller, your passion for electronics will ignite with renewed vigor, giving rise to many original and useful devices. All that remains is to wish you success in this difficult but interesting field.

11

I have a Linux application for which I would like to automate some tests and its state should change depending on the state of certain devices, i.e. USB devices, WLAN devices, WAN devices. However, we no longer have physical USB devices, WLAN, WAN, etc. devices, so I need to figure out a way to test this program without actually connecting physical devices, turning them on / off, etc.

I start out by simply creating a virtual USB device that I can control from user space, but there is a fundamental lack of knowledge on my part that prevents me from adopting any of the similar topics in these forums and applying them to my project. I feel like I need to create some kind of virtual USB driver and then link it to some kind of user-level program, not usbfs. However, even if I create this virtual driver, how do I “plug in” this user-space device and get my program registered with that particular driver? Is what I am trying to do even possible?

  • 2 answers
  • Sorting:

    Activity

0

Can't you test the application in a virtual environment using VMWare? You can then “connect” any virtual device on your computer to the guest virtual machine and test the application that way.

8

The best way is to use Linux gadget drivers and hardware that allows you to be a USB device. The gadget driver allows the computer to "pretend" to be any device. Then your system under test has one USB OTG cable for the gadget. You don't even need to unplug the cable if your gadget has the right hardware. The Gadget Box could be your Linux desktop / laptop (if it supports USB OTG) or even an Android phone or a Raspberry Pi. (Beware that USB cables are sucking out. Just because the rope fits does not mean that it is properly connected to the USB OTG.).

Once you are eligible for the USB OTG hardware, the gadget boxes all the software:

1) If the device under test supports OTG, make sure your gadget is not trying and is not a USB host. (Then your device under test will become a USB client.) I.e. make sure things like usb_storage are not automatically loaded.

2) The core supports gadgets for USB Hubs, USB-Ethernet, USB-Serial Ports, and USB sticks. Just load the modules you want into your gadget and it “just works”. For example, to create a USB stick, do something like this: "insmod g_file_storage.ko file = / dev / ram0". The far side will think you have plugged in a USB stick.

For serial devices, the gadget can run in user space code that picks up the phone on / dev / USBx and talks to the device under test. (Apparently an emulating 4G modem or whatever.)

Tons of devices are truly "USB-serial" under the hood because the manufacturer was too lazy to understand USB.

3) With a little re-compilation or tweaking, you can use these generic devices for the gadget, ID, or return different vendor strings, etc. This won't be the same as "testing on real hardware" but at least you testing the standard version of these devices.

4) For device types that are not yet in the core (like Wi-Fi or whatever), you are on your own. With enough sweat and tears of blood, you can write your own type of gadget. (Ideally, use as much user-space as possible and only handle critical components in the kernel.)

Sometimes a situation arises when you need a flash drive, but it is not at hand. For example, some accounting and reporting programs require an external storage device to run. In such a situation, you can create a virtual storage of information.

Using special software, this can be done in several ways. Let's consider each of them step by step.

Method 1: OSFmount

This small program is very helpful when there is no flash drive at hand. It works on any version of Windows.

After you have downloaded the program, do this:



Additional functions may be required while working with this program. To do this, you need to enter in the main window in the item "Drive Actions"... And then it will be possible to use the following options:

  • Dismount - unmount the volume;
  • Format - formatting the volume;
  • Set media read-only - puts a ban on recording;
  • Extendsize - expands the size of the virtual device;
  • Savetoimagefile - serves to save in the desired format.

Method 2: Virtual Flash Drive

A good alternative to the above method. When creating a virtual flash drive, this program allows you to protect information on it with a password. This has the advantage of being able to work in older versions of Windows. Therefore, if you have a version of Windows XP or lower on your computer, this utility will help you quickly prepare a virtual storage device on your computer.

The instructions for using this program look like this:

  1. Download and install Virtual Flash Drive.
  2. In the main window, click the button Mount new.
  3. A window will appear "Create new volume", specify the path for creating the virtual media in it and click "OK".


As you can see, the program is very easy to use.

Method 3: ImDisk

It is one of the more popular virtual floppy disk software. Using an image file or computer memory, it creates virtual disks. When using special keys when loading it, a flash drive will appear as a virtual removable disk.


Method 4: cloud storage

The development of technology allows you to create virtual flash drives, and store information on them on the Internet. This method is a folder with files that is available to a specific user from any computer connected to the Internet.

Such data storages include Yandex.Disk, Google Drive and Cloud Mail.ru. The principle of using these services is the same.

Let's consider how to work with Yandex Disk. This resource allows you to store information up to 10 GB on it for free.



Working with such a virtual storage medium allows you to completely manage your data: group them into folders, delete unnecessary data, and even share links to them with other users.

What is it and why is it needed?
If the radio in the car has an input for a CD changer, you can connect a similar adapter to it, it will deceive the radio and it will decide that a changer has been connected to it, and instead of discs, a regular flash drive with music is used. The adapter can be controlled by standard means, including steering from the steering wheel.

Muska has already had several reviews of such adapters, the most famous are the Chinese Yatour.

I decided to go in a non-standard way, I decided to try the Russian Trioma Flipper 2.
Overall rating - excellent, I am satisfied with the purchase, I recommend it.

For details I ask under the cut

Foreword

There is a simple desire - I want to listen to music in the car. On the radio, far from always there is something suitable, carrying a bunch of CDs with you, and constantly recording them, is tired.
I have a GU (Head Unit) in my Peugeot 407 in 2007, later called just a radio tape recorder, without USB, bluetooth, and even without the usual AUX input.

If the car has a regular radio tape recorder that is not tied to controlling any functions of the car, the easiest way is to just buy a new radio tape recorder. A branded radio with USB input can be purchased within hundreds of euros. Some more money will have to be spent so that she understands the steering from the steering wheel.

You can poke around and attach an AUX (audio) input, but you still need a sound source, and you will have to forget about steering from the steering wheel.

I discarded the options with FM transmitters for a long time - I tried a couple of different transmitters, the sound quality was not very good.

There is one more way, to connect an aporter to the CD changer input to the radio tape recorder, which will allow you to listen to music from flash drives, controlling the adapter with the standard means of the radio tape recorder, including from the steering wheel. You can find similar adapters from different manufacturers with different parameters and differing in quality, reliability, convenience or price.
The most famous adapter is Yatour. The coolest, perhaps, is the American Grom Audio, which plays, among other things, FLAC. Well, there are a few more devices to the heap - Audiolink, Xcarlink, DMC, Dension.

First of all, I began to look at yatour. On ali it costs from $ 50. But reviews on the Internet dampened the enthusiasm a little. The adapter has a line-out with a fixed level, so on many radio tape recorders the volume level is noticeably lower than from the radio tape recorder. Sometimes unstable work, freezes, criticality to the presence of extraneous files on the flash drive. The number of supported directories - how many disks the radio tape recorder supports, in my case, this is 6.

Yatour does not have an official website, Yatour's websites on the Internet are the websites of sellers. And the information has to be collected bit by bit in different places, mainly those who set it to themselves are unsubscribed, but their experience is not always suitable for your radio.
But I was lucky, I came across a Belarusian seller yatour Sergey aka SSD, who answered all my questions, including the specifics of working with my radio tape recorder.
In general, it works, but there may be problems with volume and unstable work. For the first time I heard from Sergey about Grom Audio and about Triome, which he also sells.

Grom Audio on android, supports FLAC, but no model for my car.

But Trioma Flipper 2 interested. First of all, the ability to adjust the output level (volume). In addition, it has a much more convenient folder organization and there can be many more. And it's much less buggy.
I borrowed a good comparison table between Yator and Trioma


Clarification on Yatura:
1. Extraneous files do not interfere with playback. At least on some firmwares.

So, I made my choice. Trioma !!!
When buying such an adapter, be sure to choose a model for your car. More precisely, under the car radio of your car. Different radio tape recorders may have different changer connectors that are not compatible with each other.

Where can you buy Trioma?

On the manufacturer's website there are those who sell Trioma products. There are no problems with buying an adapter in Russia or Belarus. And in Europe, from where it is easier for me to buy and do not have to clear customs and pay VAT, prices are twice as high, from 120eur without shipping costs.

I started looking for friends who could bring me an adapter from Russia or Belarus. Found!!! I found a friend from Russia who ordered and brought me an adapter at the beginning of February! Oleg, thanks!

And here is the adapter at my place!



The kit includes the adapter itself, a cable for connecting to the radio and a USB cable.
The length of the cable for connecting to the radio tape recorder is only 40 cm, which immediately imposes restrictions on the location of the adapter in the car - it has to be placed directly behind the radio tape recorder, you cannot even reach the glove compartment with it.
The adapter is about the size of a cigarette box. Simple plastic box with protruding cable for connecting under devices or AUX cable. However, after I connect the adapter to the radio, no one else will see it.
Additionally, I took an AUX cable with a minijack at the end (+ 500r)


A few more photos

Connector for connecting additional devices, AUX cable or bluetooth adapter


Mom on the adapter


Daddy on cable


Connector for radio RD4


Do not open, guarantee


Installation

Radio tape recorder RD4, unscrew the two screws with a hexagon and take out the radio tape recorder.

There are two suitable connectors on the back, one of them will not work - checked;)
The photo shows the required connector. In it, the wiring is already connected to the changer, we take out the installed connector and turn on our own.


We connect the cable with the adapter, turn on the ignition and a miracle - everything worked right away !!! Moreover, the volume level is about the same as from the built-in CD.

But then we start to think - where to bring the USB cable. The easiest way in my case was to run the cable under the steering wheel into the small glove compartment to the left of the driver.


The adapter itself was stuck into a niche at the back-left of the radio. There is not much space there, after installing the radio tape recorder in place, the adapter was clamped there by cables, so there was no need to additionally fasten the adapter.

All forums write that the radio requires activating the changer in the service. For me, everything turned out to be much simpler. After switching on, the radio tape recorder itself determined that a changer was connected to it and it became possible to select it through the input switch (radio / CD / changer).
As it turned out, activation is needed not for the radio, but for the display, so that it can reflect information for the changer.
But six months ago, I and the Chinese, well done, send a display with all the activated functions. So everything worked for me without additional activation.

Adapter operation

Sound quality. Comparable to a CD player. The standard acoustics in the car are rather mediocre, so you will definitely not hear the difference with the standard CD player on my car.
Turn-on speed... Less than a couple of seconds after turning on the ignition on a USB flash drive with a couple of dozen catalogs. On the forums, they write that with several hundred directories, the speed is lower. The adapter remembers where it was playing before it was turned off and starts playing from the same place. This property is valuable for those who like to listen to audiobooks. The adapter remembers the location from the last 4 flash drives /
Switching tracks. Fractions of a second, there is no difference in the same or another directory is the track. There are no extraneous sounds during switching.
Replacing the flash drive. When the radio is working, we take out the USB flash drive and put in a new one. It is determined within a couple of seconds and immediately starts playing. During the replacement, a very quiet short trill may sound.

The adapter understands 32 directories, which can contain 32 subdirectories, each of which can contain up to 99 files. But soon I realized that the disk switch only switches the first six disks. Although in Random mode, the adapter sees all directories.

Asked a question on the Trioma forum, support responded very quickly and suggested options for organizing directories. The problem turned out to be that on the RD4 the buttons, although they perform the function of Disc + / Disk-, in fact, they send commands to the adapter for direct selection of disk 1-6. So with these buttons you can only switch 6 root directories or 6 subdirectories.
And managing 1024 directories on my radio will not work. You can manage only 32 * 6 = 192 directories;)

The description says that the FF / FR buttons perform a double function - changing directories / subdirectories and rewinding.
But on RD4 Track + / Track- are combined with FF / FR and for the adapter these buttons have a Triple purpose:
1. Short press - Track + / Track-
2. Pressing for 2-3 seconds, releasing when the sound from the current track disappears - switching the directory
3. Long press> 3sec, there is an accelerated muffled sound - rewind
Time is approximate, you need to focus on sound

Even before the purchase, I assumed that I would write down one large mega-flash drive with hundreds of catalogs. But now I see that it is more convenient to have several flash drives with different collections.
I now have this:
1. Russian stage 80-90s
2. Foreign stage 80-90s
3. Instrumental

Total. For relatively little money, I got a bug-free adapter with good sound quality and simple, intuitive controls. I am very pleased with the purchase, Trioma is great !!!

Additional links

Mini FAQ

Some questions remained outside this review, I decided to take them out to a separate minifak. Here I will also add questions that arise in the comments.
  • What needs to be done in order for the names (file names, tags, or anything at all) to be shown on the display?
  • Triom adapters certainly "see" tags, file names, and folder names. Where possible, they display text strings on the standard displays of radio tape recorders: BMW and all vehicles with the optical MOST bus. Perhaps text output will soon be implemented for some Toyota / Lexus devices.
  • CD changers do the job without any problems.
  • I'm afraid you are mistaken: we do not know of external changers other than the models listed above that cope with this task. Changers built into the head unit are another matter, where the text is output directly to the display controller - this is a completely different mechanism.
  • Is it possible to connect additional devices to the Trioma Flipper 2 adapter?
  • You can connect to the adapter or a cable-adapter AUX-mini-jack 3.5 male
I plan to buy +23 Add to favourites I liked the review +21 +46