Lower Microphone not working and my experience with Purism Support

So, first, I will say that the problem is already resolved and both microphones are fully functional now, but I just wanted to write a post about the initial problem, my experience with support, how I fixed it, and what I have learned along the way, in the hopes that it’s useful to someone. This is gonna be a long one, with some technical info too, so be warned. Skip to the end for TLDR if you want.

I was one of the early backers, so I received my Evergreen phone in November of last year, but I still was still using an old flip phone right up until they shut off the 2G/3G towers early this year. As such, I had never used the L5 as an actual telephone until after the 1 year warranty was up.

When I finally got a SIM card put in and made some calls, the party on the other end reported that I was very quite and hard to hear. After some experimentation with rubbing my finger over the holes for the microphones on the top and bottom of the device, I found that the top mic was working fine, but when swiping my finger over the bottom one, the only sound that could be heard was the faint vibrations through the frame picked up by the top mic.

I suspected that I had somehow messed up the pulseaudio configuration or the mixer settings in such a way that could cause the mic to not work, so I tried messing around with all the mixer settings in alsamixer and un-did all the tweaks and hacks I had done to pulseaudio to make audio work in a chroot and still had no luck. So, I then decided to re-flash the phone and revert everything to stock in the hopes that that would do it. Still no luck.

I started to suspect a hardware problem, and decided to contact support. I soon got a response (thanks, Mladen!) with some general suggestions to make sure software is up to date, asking about VoLTE settings and a few other things I had already tried, but unfortunately he didn’t have any concrete answers and said I may have to just send it back for them to troubleshoot and that since it was past the warranty I might have to pay for repairs, but since I was an early backer he’d at least ask if they could waive the fees.

Since this is my only cell phone, and I have a fair bit of commute time to/from work every day (300 miles/week, have dodged a few deer and other animals on the highway, and not-quite dodge a couple more) and am an emergency contact for my 96 year old grandmother, I was very hesitant to go without a phone for emergency calls away from home, and I really didn’t want to get a glorified electronic jail cell (Android or iPhone), especially/even if just temporarily. So, I decided to really dig in and try to resolve the problem myself.

Sound chip technical stuff:
I pulled up the datasheet for the sound chip ( https://www.farnell.com/datasheets/1812050.pdf ) and started reading the programming section to try various things like read from the registers directly to ensure that both mics were enabled, swap inputs, manually toggle amplifiers, power supplies, on and off etc. After much experimenting, I came across one very useful test: Bit 0 of register 0x9 toggles loopback mode, which feeds the input from the mics directly back out the speakers, bypassing the operating system and software altogether.

First, I started pavucontrol, to be able to watch the VU meters and adjust volumes for both mics, set Port to Stereo Microphones, and unlocked left/right channels to be able to adjust each separately.

The chip is on i2c bus 2, address 0x1a, and does its reads and writes 16 bits at a time, instead of the more common 8, so each address/value has two bytes instead of one.
Reading this register before modifying:

i2ctransfer -f -y 2 w2@0x1a 0x00 0x9 r2

returned 0x3 0x00
So, I left the rest of the bits alone and toggled bit 0 to 1:

i2ctransfer -f -y 2 w4@0x1a 0x00 0x9 0x03 0x01

Then, like a microphone held next to a speaker (because that’s basically what this is) it started making an unpleasant squealing noise which only changed when covering/uncovering the top mic, and still no response at all on the bottom one, and no amount. So it’s almost certainly a hardware problem now (theoretically, mixer settings could still mute the mic or something, but I already tried everything I could think of).
End sound chip technical stuff

So, next, I pulled up the board assembly drawing and schematics (nobody else does this, and there’s no way I would have figured this out without these documents! Thank you so much for publishing this info, Purism!) and studied how it was wired, and disassembled my phone.

Mic wiring technical info
The two microphones are digital microphones, meaning it is not just an analog signal fed into a separate pin on the sound chip, but instead with both mics having a data and clock line, as well as a left/right selector pin. I then located some pads near the top mic on the main (after the fact, I wish I had take pictures… maybe if/when I take it apart again, I will snap some photos and put them here) where both microphones are tied together on both the data and clock lines, then checked for continuity to some matching traces on the lower USB board. I found that the clock line had continuity as expected, but the data line for the lower mic did not have continuity to the top of the main board! I re-checked several times to confirm. Finally, an explanation of why it’s not working! Now to just figure out where the break is…

Next, took out the main PCB from the phone and checked continuity to the pads on the FPC connector, and found that it did work up to that point. Next, I checked between the USB board to the plug on the FPC connector, and found that surprisingly, it also had continuity. So I then plugged it back in and re-tested between the top of the main board to the lower USB and this time it did show the data lines were connected. I then reassembled everything, and booted it up and tested.
End wiring technical stuff

And it worked! TLDR/Long story short: it was just a bad connection between the main PCB and the USB board and un-plugging and re-plugging fixed it. If I needed to re-solder any components, I don’t think I would have been able to repair it myself as they are so tiny, it’d be like pushing grains of sand around with an unsharpened pencil… But the fact that the datasheets, board schematics and other information used to troubleshoot this myself is available and accessible, and there is no haughty “you aren’t good enough to work on our perfect device” rhetoric from the manufacturer like with Apple, is incredible and I really appreciate it!

And hopefully this wall of text is helpful in some way to someone.

8 Likes

When I make calls, I feel that I have to speak unnaturally loud for the other party to hear me.

For those of us less technically adept, can you recommend a series of steps by which the user can exclude a malfunction of the bottom microphone? That is, by using a combination of terminal commands, PulseAudio, and/or other steps can we confirm that this mic is actually functioning as intended?

Sure. You might just need to adjust the volume settings, but here is one way you can test that both mics at least work:

Install pavucontrol and gnome-sound-recorder:

apt-get install pavucontrol gnome-sound-recorder

Open pavucontrol (by typing pavucontrol into a terminal and hitting enter, or tapping Show All Apps then tap PulseAudio Volume Control icon). On the window that comes up, switch to the Input Devices tab, take note of the port for Built-in Audio Headset Microphone (default is Handset Microphone, I think). Change it to Stereo Microphones, and tap the lock icon on the right side to allow setting both microphones independently. Take note of their default position and set them somewhere around 40-50%.
Now open up gnome-sound-recorder, make sure Audio Channel setting is set to Stereo, then hit record, and switch back to pavucontrol. Gently blow on the top mic (pinhole near the center) and watch the VU meter (blue bar just blow Front Right slider) and it should jump around quite a bit. Then gently blow on the lower mic (right hand side of USB port with screen facing you), and again watch the VU meter. Now you can switch back to gnome-sound-recorder and hit stop, save it, then plug in some headphones and play back the sound. The top microphone corresponds to the left audio channel, bottom to the right channel, so you should hear whooshing noise in one ear, then the other.

After this, don’t forget to put your settings back. I believe the port setting needs to be set back to Handset Microphone for calls to work properly (haven’t tested it though). There also seems to be some kind of mixing going on where it always listens to both microphones but the ratio of sliders determines the sensitivity of each, but even if you turn one all the way down, it still picks up audio from that mic. Not sure exactly how it works… again, I only just got mine working at all yesterday. I’d recommend starting out by turning up the right channel a little and the left down a little, or maybe both sliders up a bit and roughly equal in value, and experiment to find what works best for you.

1 Like