Audio and cameras not working on Lenovo miix 320-10icr

Hi,
I have been running Ubuntu mate 18.04 on a Lenovo miix 320-10icr successfully for quite a time but never managed to have it recognize the two cameras.

I asked in this and other forums for a solution but never got any. So, I was very much disappointed to find that the cameras are not recognized either in 20.04. The same applies for audio.

I'd like to ask the developers to take care of this to finally enable me to video chat :slight_smile:

I'd like to also mention that the screen comes up in portrait orientation but this can be easily handled with xrandr. It would be good, though, to have it in landscape orientation from the beginning.
Thanks, Dieter

Hello, unfortunately it can be annoying to have hardware that doesn't work - usually it's because there are no open source drivers for it in the kernel or in a package.

There might be a project out there you can compile that provides a driver. To know the actual audio/video hardware in the system - please run in the terminal:

lspci
lsusb

Have you tried saving this setting in Monitors and clicking Apply system-wide? I'd imagine this should keep it in landscape across reboots.

Hi lah7,
thanks! The problem is that neither of the cameras shows up in lspci and lsusb. I can only identify them in Windows 10, which is also installed on the same laptop: It tells me that they are ov5670 and Unicam ov2680. I even found a file on GITHUB: https://github.com/torvalds/linux/blob/master/drivers/media/i2c/ov2680.c that provides at least a .c file for one of the drivers but I do not know how to compile and integrate it as a module or anything....
Help is very much appreciated :slight_smile:

the problem with the portrait orientation is minor and I shall try your suggestion. It can possibly also be permanently set in GRUB

Please run those commands anyway. This should list the hardware even if there isn't a driver present. This will help identify the IDs to research.

lsusb
lspci

The only exception is, if the hardware is physically "off" and the kernel doesn't know see them as "plugged in".

Hi, thanks a lot for your willingness to help! Here are the outputs:

lsusb:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2a Intel Corp. 
Bus 001 Device 010: ID 048d:8911 Integrated Technology Express, Inc. 
Bus 001 Device 009: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lspci:

00:00.0 Host bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register (rev 36)
00:02.0 VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Configuration Registers (rev 36)
00:03.0 Multimedia controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Imaging Unit (rev 36)
00:0b.0 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller (rev 36)
00:14.0 USB controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller (rev 36)
00:1a.0 Encryption controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Trusted Execution Engine (rev 36)
00:1c.0 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1 (rev 36)
00:1f.0 ISA bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU (rev 36)
01:00.0 Network controller: Intel Corporation Wireless 3165 (rev 81)
bw D-E

I couldn't identify a webcam from the list. However, ov2680 is in the kernel and you can probe it as follows:

sudo modprobe ov2680

I came across a few topics suggesting different laptops have hardware toggle switches via the keyboard - this could be disabling the camera - usually activated by pressing keys with Fn and a function key like F10 - does yours have any functions like this?

It might be worth running this command to list modules:

lsmod

(A value of 0 indicates its disabled.)


For the audio, I think it's the ES8316 driver:

These are suggesting to recompile the driver and blacklist some other modules in order for the sound to work.

Hi,

  1. 'sudo modprobe ov2680' does not show anything

    1. I tried 'cheese' and received 'no device found', I the pressed
      F1 to F12 but no reaction.

    2. HOWEVER below is the output from 'lsmod'. Indeed there is a
      module called ov2680!!!! See also further down the output of
      'modinfo ov2680'

    3. I then tried 'insmod ov2680' but got the message 'insmod:
      ERROR: could not load module ov2680: No such file or directory'

So, a step further but not yet there :slight_smile:

bw D-E

Hi I just see that the output was removed from my mail. Here it is again:

Module                  Size  Used by
ov2680                 24576
videodev              225280  1 ov2680
mc                     53248  2 videodev,ov2680
intel_rapl_msr         20480  0
mei_hdcp               24576  0
intel_xhci_usb_role_switch    16384  1
intel_atomisp2_pm      16384  0
st_accel_i2c           16384  0
st_sensors_i2c         16384  1 st_accel_i2c
st_accel               20480  1 st_accel_i2c
snd_sof_acpi           20480  0
st_sensors             24576  1 st_accel
industrialio_triggered_buffer    16384  1 st_accel
snd_sof_intel_byt      20480  1 snd_sof_acpi
kfifo_buf              16384  1 industrialio_triggered_buffer
snd_sof_intel_ipc      20480  1 snd_sof_intel_byt
snd_sof               106496  3 snd_sof_acpi,snd_sof_intel_byt,snd_sof_intel_ipc
snd_sof_xtensa_dsp     16384  1 snd_sof_acpi
autofs4                45056  2
ip_tables              32768  0
x_tables               40960  1 ip_tables
lp                     20480  0
ppdev                  24576  0
parport_pc             40960  0
parport                53248  3 parport_pc,lp,ppdev
sch_fq_codel           20480  2
arc4                   16384  0
pcbc                   16384  0
nls_iso8859_1          16384  1
binfmt_misc            24576  1
bnep                   24576  0
cmac                   16384  0
ccm                    20480  6
rfcomm                 81920  0
snd_hdmi_lpe_audio     28672  2
intel_powerclamp       20480  0
coretemp               20480  0
kvm_intel             286720  0
joydev                 24576  0
snd_soc_sst_cht_bsw_rt5645    28672  3
kvm                   655360  1 kvm_intel
irqbypass              16384  1 kvm
punit_atom_debug       16384  0
wmi_bmof               16384  0
axp288_fuel_gauge      28672  0
axp20x_pek             16384  0
crct10dif_pclmul       16384  1
crc32_pclmul           16384  0
axp288_charger         24576  0
axp288_adc             16384  0
extcon_axp288          20480  0
mmc_block              49152  3
industrialio           73728  7 axp288_adc,industrialio_triggered_buffer,st_sensors,kfifo_buf,st_accel_i2c,axp288_fuel_gauge,st_accel
roles                  16384  2 extcon_axp288,intel_xhci_usb_role_switch
ghash_clmulni_intel    16384  0
iwlmvm                380928  0
mac80211              843776  1 iwlmvm
i915                 1982464  3
libarc4                16384  2 mac80211,arc4
aesni_intel           372736  4
glue_helper            16384  1 aesni_intel
crypto_simd            16384  1 aesni_intel
i2c_algo_bit           16384  1 i915
cryptd                 24576  2 crypto_simd,ghash_clmulni_intel
intel_cstate           20480  0
iwlwifi               335872  1 iwlmvm
drm_kms_helper        184320  1 i915
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
mei_txe                28672  1
cfg80211              704512  3 iwlmvm,iwlwifi,mac80211
drm                   487424  4 drm_kms_helper,i915
lpc_ich                24576  0
processor_thermal_device    24576  0
intel_soc_dts_iosf     20480  1 processor_thermal_device
mei                   106496  3 mei_hdcp,mei_txe
intel_rapl_common      24576  2 intel_rapl_msr,processor_thermal_device
wmi                    32768  1 wmi_bmof
snd_intel_sst_acpi     20480  1
snd_intel_sst_core     61440  1 snd_intel_sst_acpi
snd_soc_sst_atom_hifi2_platform   110592  2 snd_intel_sst_core
snd_soc_acpi_intel_match    32768  2 snd_sof_acpi,snd_intel_sst_acpi
snd_soc_acpi           16384  4 snd_sof_acpi,snd_soc_acpi_intel_match,snd_intel_sst_acpi,snd_soc_sst_cht_bsw_rt5645
snd_seq_midi           20480  0
video                  49152  1 i915
snd_seq_midi_event     16384  1 snd_seq_midi
snd_soc_rt5645        172032  2 snd_soc_sst_cht_bsw_rt5645
spi_pxa2xx_platform    28672  0
snd_soc_rl6231         20480  1 snd_soc_rt5645
snd_rawmidi            36864  1 snd_seq_midi
snd_soc_core          241664  4 snd_sof,snd_soc_sst_atom_hifi2_platform,snd_soc_rt5645,snd_soc_sst_cht_bsw_rt5645
gpio_keys              20480  0
axp20x_i2c             16384  0
axp20x                 32768  1 axp20x_i2c
input_leds             16384  0
snd_compress           24576  1 snd_soc_core
snd_seq                69632  2 snd_seq_midi,snd_seq_midi_event
ac97_bus               16384  1 snd_soc_core
i2c_hid                28672  0
hid_multitouch         28672  0
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
snd_pcm               106496  7 snd_sof,snd_hdmi_lpe_audio,snd_soc_sst_atom_hifi2_platform,snd_soc_core,snd_soc_rt5645,snd_soc_sst_cht_bsw_rt5645,snd_pcm_dmaengine
snd_timer              36864  2 snd_seq,snd_pcm
snd                    90112  19 snd_seq,snd_seq_device,snd_timer,snd_compress,snd_hdmi_lpe_audio,snd_soc_sst_atom_hifi2_platform,snd_soc_core,snd_pcm,snd_rawmidi
dw_dmac                16384  6
soundcore              16384  1 snd
dw_dmac_core           28672  1 dw_dmac
8250_dw                16384  0
sdhci_acpi             24576  0
sdhci                  65536  1 sdhci_acpi
int3400_thermal        20480  0
int3403_thermal        16384  0
acpi_thermal_rel       16384  1 int3400_thermal
int340x_thermal_zone    16384  2 int3403_thermal,processor_thermal_device
soc_button_array       20480  0
acpi_pad              184320  0
intel_int0002_vgpio    16384  1
mac_hid                16384  0
hid_generic            16384  0
usbhid                 57344  0
hid                   131072  4 i2c_hid,usbhid,hid_multitouch,hid_generic
btusb                  57344  0
btrtl                  24576  1 btusb
btbcm                  16384  1 btusb
btintel                24576  1 btusb
bluetooth             577536  9 btrtl,btintel,btbcm,bnep,btusb,rfcomm
ecdh_generic           16384  1 bluetooth
ecc                    28672  1 ecdh_generic

modinfo ov2680

filename:       /lib/modules/5.4.15-050415-generic/kernel/drivers/media/i2c/ov2680.ko
license:        GPL v2
description:    OV2680 CMOS Image Sensor driver
author:         Rui Miguel Silva <[email protected]>
srcversion:     74D4897303DE478B4401444
alias:          of:N*T*Covti,ov2680C*
alias:          of:N*T*Covti,ov2680
depends:        videodev,mc
retpoline:      Y
intree:         Y
name:           ov2680
vermagic:       5.4.15-050415-generic SMP mod_unload
signat:         PKCS#7
signer:        
sig_key:       
sig_hashalgo:   md4

ONE MORE THING:

I had contacted the author of the module in 2018 but he answered that the module was NOT for Linux but rather for ARM!

Sorry for the fuzz with mail/user group page. But I first found out that everything flanked with '######' was automatically removed, then I got weird formatting of my texts and finally 'Reply' did not work. So, I am sending this via ordinary mail....

Surrounding the output with triple tricks (```) will display it in a easier to read code block.


I actually don't know what to suggest - really sorry. The driver we think is the one is present but your cameras would work if it was compatible. If the driver indeed only works on ARM processors, you could be out of luck for now. That said, someone may have written an alternate out-of-tree driver that could be compatible with the chipset.

What puzzles me is that I can't identify a camera in lsusb / lspci - so unless the BIOS is disabling them?

I hope someone will come across this topic and assist in the hunt for a driver. Or, keep trying the newest kernels - hardware support gets better over time :slight_smile:

Well, that's sad, in any case thank you very much! Maybe somebody of the main branch of Ubuntu takes up the challenge to provide a completely functional Ubuntu 20.04.

But, to reiterate my previous question: Can the file on GITHUB: https://github.com/torvalds/linux/blob/master/drivers/media/i2c/ov2680.c be used for something? I do not know how to compile and integrate it but maybe somebody knows????

Hi dieter-erich,

I have a Lenovo Miix 320-10IR too, and I am facing the same problem: both cameras (and mic) are not recognised in Ubuntu Mate 20.04. I've tried with standard Ubuntu and with Lubuntu, and the results are sadly the same... Hopefully someday we will have functional drivers for our laptop's cameras and microphone!

not sure if you ever found an answer, but I booted a Lenovo Miix 320 using pop_os 20.04 version 11 I think, and both webcams worked when live booting. I tried later versions of pop_os when considering doing a full install and neither camera worked, so i didnt bother working out why. I'll flash pop_os 20.04 v11 and see if I can test if cameras work. If they do, i'll investigate a little as to why they dont always.

Wow, that sounds awesome.
I remember having the same problem getting the cameras recognized when I installed Ubuntu, then PopOS on the MIIX 320. I think it was also version 20.04, not sure now. It was almost a year ago.

I was reasearching and googling then, and I think the information I found indicated that the driver for the cameras is correct, but there is some kind of chip or bus or microcontroller or whatever in there, through which the cameras communicate with the motherboard, and that particular kind of whatever does not have a working driver, so the system can't see the cameras. I think it turned out there is a driver for that thing installed, but it's a stub doing nothing or something. There was a driver for it earlier in the Debian sources which did something, but it got nerfed for some reason. Couldn't find out more and wasn't able to make anything useful out of that info, even trying to compile something into the kernel from older sources I think.

Sorry, don't know now what that thing was whatever interface that sits between the camera and the motherboard or whatever for which there was no working driver.

But if it does work when live booting there must be a working solution in there. Will try that out shortly.

Hmm, just tried 20.04 (last version I tried was 19.10 actually), the current one downloaded from the official website, which is pop-os_20.04 v18. And cameras do not work after booting from live usb.

So I searched for 20.04 v11 and found it here. Downloading now.

If that does actually work from live USB then probably it will after fresh install.

Probably have to make sure to never ever apt update then? Will it even work to install normal stuff I need without ever doing apt update?

Hi, any news on this issue? Does pop-os_20.04v18 find the cameras? Has anybody found a solution?

Hi :slight_smile:
I don't really think it is possible to make it work.
I got one miix 320 and have been looking long time to fix that. Never fixed it and finally bought a other computer.

OK, thanks! I also tried a lot! Best, Dieter

1 Like

As far as I know using the cameras on the miix 320 requires the atomisp drivers which communicates between the cameras and the motherboard. These had been removed from the kernel, but I think they have been readded in kernel 5.8 thanks to the work of Mauro Carvalho Chehab. Ubuntu 20.10 uses kernel 5.8 so I'd say that's the best bet of getting it to work. I know someone with a miix 320 so I can try it out but I don't know when I'll be able to do that. If anyone here tries it and discovers that it works go give a big kudos to Mauro as he single handedly brought back the drivers and is currently improving and maintaining them.