How the Mute button works on Yandex Station Detailed analysis of logic and schemes

How the Mute button works on Yandex Station Detailed analysis of logic and schemes

Greeting! Hennadiy Kreil Kruglov from the team that develops the hardware part of Yandex Stations is in touch. We were already able to get to know one of Habra’s readers within the framework of Y.Zhelez’s events, where we share our device development experience.

For the past few years, my team and I have been hatching the idea of ​​a public story about the installation of a separate part of our smart speakers – the Mute button. This topic is of keen interest as it directly relates to privacy. We’ve often said that Mute disables the microphones physically, but we didn’t say how exactly that happens. As a result, the questions were collected, but the hands, as usually happens, did not reach the article. Perhaps we will return this debt today.

In this post, we’ll talk about our basic solution for the Mute button. You will see that the processor of the device does not have the physical ability to control the power supply of the microphones, which means that it is impossible to bypass the button in a software way. We will post the schematics and explain how they work. First, in a language that fellow engineers will understand. Finally, we summarize in simple words for everyone. I hope it will be interesting and useful.


Let’s start with a simple one. Why a button and not a hardcore circuit breaker? The answer is on the surface. The button is mechanically more reliable on average and better protected from dirt and dust. In addition, on most Stations, the Mute button performs another additional function: if you hold it down for more than five seconds, the Station’s settings are reset. Well, the button fits into the design of the device, of course, more easily.

Let’s go further. A button is a mechanical component. The main question: what to do with her signal? It is easier and more convenient to start this signal on the processor or microcontroller: it will be able to monitor the duration of the press, switch the Mute state after a short press, and reset the settings after a long press. But then the behavior of the speaker in the sense of turning off the microphones will depend on the firmware. To prove that we have no way to change the behavior of the Mute button, the control of the microphones is implemented without the use of a processor/controller, on primitive components. That’s why the button operation scheme is so complicated. If it were not for this necessity, the circuit would be ten times simpler, the microphones would always work, and the processor would simply not use their signal in Mute mode.

To make our story more specific, let’s consider the logic of the button’s operation using the example of the most popular modern models of Yandex Stations.

Midi Station (2023)

Let’s start with one of the most popular novelties of the past year. Mute button binding scheme Midi stations looks like this:

By the way, this scheme was tested in the updated version Mini Stations (2021).

Before moving on, let’s recall the truth table of the trigger:

This is a screenshot from the datasheet. The first and third lines will not work for us, because the #PRE input is connected to the power supply.

When the power is turned on, the capacitor C249 is discharged, on the gates VT6, VT7, VT8 – zero, therefore:

  • VT6 is closed, logic 1 on the MUTE_BUTTON line.

  • VT7 is open, VT8 is closed, so that the battery of capacitors C250, C252, C254 is charged.

Next, capacitor C249 is charged through resistor R125. It will charge in time T = RC = 100k × 0.22 μF = 22 ms. After that:

  • Transistor VT6 opens and supplies 0 to the MUTE_BUTTON line.

  • Transistor VT7 closes, charging of the capacitor bank stops.

  • The VT8 transistor opens and discharges the capacitor bank.

  • After discharging the capacitor bank, the transistor VT9 closes through R130 and the capacitor C253 begins to charge.

Thus, the input of the #CLR flip-flop is 0 for some time, and the flip-flop is reset: the output of Q is 0 (because #PRE is always 1), the output of #Q is 1. At the input of D after 10 ms (R131 = 100k , C255 = 0.1 µF => T = RC = 10 ms) will appear 1. But the CLK input remains 0, so the flip-flop will not toggle. A little below the text for clarity is the switching schedule.

The MICENR line (Q output) is 0, so MUTE_STATE will be 1 and MLED will be 0.

When the Mute button is pressed, the charge is redistributed between the charged C249 and the discharged C251: since the capacitance of the former is greater, a logic 1 appears on the CLK line. It is there for a short time: the capacitors discharge through R129 and discharge in about 0.3 ms.

Thus, a short single pulse will be applied to the CLK input. Since there is a logical 1 at the D input, the flip-flop will switch: a 1 will appear at Q and a 0 at #Q. After 10 ms, a 0 from the output of #Q will appear at the D input, but this will not change anything, since again there is no edge at the CLK input. A 1 will appear on the MIC_EN_R line, a 0 on the MUTE_STATE line, and a 1 on the MLED.

Let’s return to the left part of the diagram. After capacitors C249+C251 are discharged:

  • Transistor VT6 is closed, 1 is applied to the MUTE_BUTTON line.

  • The transistor VT8 closes, the discharge of the capacitor battery stops.

  • Transistor VT7 opens, charging of the capacitor battery begins.

If you hold the button longer, the capacitor battery will have time to charge. The estimated charging time to a voltage of 0.7 from the supply voltage is 15 s (T = RC = (1 M + 100 k) × (4.7 μF × 3)). However, in reality, the transistor will open at a lower voltage, so the delay will also be shorter – about 5 s.

Transistor VT9 will open, a 0 will appear at the #CLR input, and the flip-flop will reset to its original state with Q = 0 and #Q = 1. The corresponding output circuits will also reset. If the button is released earlier, the capacitor battery will not have time to charge. 22 ms after the button is released, capacitor C249 will charge, and then:

  • The MUTE_BUTTON line will return to 0.

  • The capacitor bank will discharge again.

  • The state of the MUTE_STATE and MLED lines will not change.

The next time you press the button, a single pulse will appear again at the CLK input, but this time the D input will already be 0. Thus, the flip-flop will switch again: Q will appear 0, and #Q will show a 1. The MUTE_STATE and MLED lines will change their state respectively.

Let’s show the switch on the graph:

Obviously, the processor is not involved in switching the MUTE state and cannot affect the operation of the button.

Let’s see where the output lines go. MUTE_BUTTON and MUTE_STATE go to the GPIO of the processor. This connection is necessary so that the program can understand which state the button is in, and which state the microphone subsystem is in. This is necessary, for example, to start the process of returning to factory settings when pressed for a long time.

Let’s look at the top-level diagram:

Let’s dive deeper, inside the square at the bottom right:

And even deeper:

The GPIO of the processor is connected to the drains of the transistors. Even if these GPIOs are switched to output mode, applying logic signals to the MUTE_BUTTON and MUTE_STATE lines is not able to switch the circuit.

Now let’s trace the path of the MLED line. Let’s dive into the upper right square of the top-level scheme:

Connector X5 connects the main board and the microphone board.

Here is the microphone board:

First, let’s look at the Connector box:

A 0 on MUTE_EN will make transistor VT2 open, supplying power to +VDD_MIC, and a 1 will make it closed, powering off. The top-level diagram shows that the microphones are powered by the +VDD_MIC / +3V3_MIC chain.

Let’s take a look at the Mics.SchDoc box so as not to leave white spots:

And now – in the box LED_Driver_Alice.SchDoc:

Here it can be seen that from 1 to MUTE_EN the transistor is open and the red channels of the LEDs are turned on.

Station 2 (2022)

Scheme of tying the button in Stations 2 repeats the scheme from the Midi Station, so we will not dwell on it:

The MHWEN and MSWDET lines are connected to the processor’s GPIO (again, the processor is not able to affect the switching circuit with them). And the MLED signal is sent to the microphone board through the loop.

Let’s look at the diagram of the microphone subsystem. First, the general view:

Now the connector connection diagram:

Let’s look at the microphone and LED circuits:

In the right part, there is a transistor VT1, which turns on the red channels of the LEDs at a logic 1 on the gate.

As it is written: at a logic 1 on the MLED, the LEDs are lit, and the microphones are powered off. And vice versa.

Max Station (2020)

Here, the trigger scheme is simpler, since the Max Station has two buttons and there is no need to use the MUTE button to reset to factory settings.

When turning on the power:

  • Capacitor C18 is charged through R16.

  • Capacitor C17 is charged through R20 T = RC = 1 µF × 100 k = 100 ms. The flip-flop resets: the Q output is 0, but #Q is 1.

  • Capacitor C28 is charged through R15 at T = RC = 0.1 µF × 100 k = 10 ms and a logic 1 appears at the D input.

When the button C18 is pressed, the capacitor is discharged through R2 at T = RC = 0.1 µF × 1 k = 0.1 ms. A single pulse is applied to the CLK input. Since the D input is a logic 1, the flip-flop switches: the Q output is a 1 and #Q is a 0. After 10 ms, the D input is a logic 0 from the #Q output.

When you release the button, the capacitor C18 will charge after 10 ms, so the button should not be pressed again before 🙂

When pressed again, the trigger will pass again and the MIC_EN and #MIC_EN signals will change their level.

Note that the VD1 and VD2 LEDs are lit when #MIC_EN is high and MIC_EN is low.

The MIC_EN signal is connected to the connector, from where it goes to the GPIO of the processor. It is no longer used anywhere. The processor, even after switching the GPIO to output mode, cannot switch the circuit in any way: the trigger switches only from CLK, but only the button can send a signal to it.

The #MIC_EN signal is used to control the microphones:

Here, a logic 1 on #MIC_EN (microphones off) disables power to the microphones, and disables the DD1 and DD2 buffers that provide clocks to the microphones:

So both power supply and clocking are disabled here.

Conclusions – in simple words

So, pressing the Mute button disables the microphones without the involvement of the processor and software: they are powered off, they stop working. You can turn on the microphones either by pressing the Mute button or by resetting the power of the entire device (roughly speaking, if you unplug the PSU from the outlet and plug it back in). The processor has no physical ability to control the power supply of the microphones. We consciously went to create such a complex scheme to achieve this effect.

The solutions described in the article have been used in our columns for several years and are used by millions of users. We consider such scales to be a good benchmark. However, we understand that there are no perfect solutions. And that’s why we want to remind you that Yandex Stations participate in the “Bug Hunt”. Recently, we raised the maximum amount of reward for finding in vulnerable devices to one million rubles. We believe that this will help to test devices with Alice for strength and make them even more reliable.

Related posts