Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

request_adapter() failed at Android 8.1 #2419

Closed
jinleili opened this issue Jan 25, 2022 · 9 comments
Closed

request_adapter() failed at Android 8.1 #2419

jinleili opened this issue Jan 25, 2022 · 9 comments
Labels
area: api Issues related to API surface good first issue Good for newcomers type: enhancement New feature or request

Comments

@jinleili
Copy link
Contributor

Test device: Google Nexus 5x(Android 8.1.0)
Backend: VULKAN

2022-01-25 10:55:31.018 27110-27110/name.jinleili.wgpu W/wgpu_hal::vulkan::ada..: sample_rate_shading feature is not supported, hiding adapter: Adreno (TM) 418
2022-01-25 10:55:31.019 27110-27110/name.jinleili.wgpu A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 27110 (e.jinleili.wgpu), pid 27110 (e.jinleili.wgpu)
Logcat full output:

2022-01-25 11:16:12.163 28652-28652/? I/zygote64: Late-enabling -Xcheck:jni
2022-01-25 11:16:12.163 28652-28652/? I/zygote64: Late-enabling -Xcheck:jni
2022-01-25 11:16:12.163 28652-28652/? I/zygote64: Late-enabling -Xcheck:jni
2022-01-25 11:16:12.697 28652-28688/name.jinleili.wgpu D/OpenGLRenderer: HWUI GL Pipeline
2022-01-25 11:16:12.909 28652-28652/name.jinleili.wgpu W/MaterialButtonToggleGroup: Child order wasn't updated
2022-01-25 11:16:12.909 28652-28652/name.jinleili.wgpu I/chatty: uid=10106(name.jinleili.wgpu) identical 2 lines
2022-01-25 11:16:12.910 28652-28652/name.jinleili.wgpu W/MaterialButtonToggleGroup: Child order wasn't updated
2022-01-25 11:16:13.299 28652-28657/name.jinleili.wgpu I/zygote64: Do partial code cache collection, code=30KB, data=26KB
2022-01-25 11:16:13.299 28652-28657/name.jinleili.wgpu I/zygote64: After code cache collection, code=30KB, data=26KB
2022-01-25 11:16:13.299 28652-28657/name.jinleili.wgpu I/zygote64: Increasing code cache capacity to 128KB
2022-01-25 11:16:47.502 28652-28688/name.jinleili.wgpu I/Adreno: QUALCOMM build                   : 8e59954, I0be83d0d26
    Build Date                       : 09/22/17
    OpenGL ES Shader Compiler Version: EV031.21.02.00
    Local Branch                     : O17A
    Remote Branch                    : 
    Remote Branch                    : 
    Reconstruct Branch               : 
2022-01-25 11:16:47.504 28652-28688/name.jinleili.wgpu D/vndksupport: Loading /vendor/lib64/hw/gralloc.msm8992.so from current namespace instead of sphal namespace.
2022-01-25 11:16:47.529 28652-28688/name.jinleili.wgpu I/Adreno: PFP: 0x00000000, ME: 0x00000000
2022-01-25 11:16:47.559 28652-28652/name.jinleili.wgpu E/vulkan: invalid vkGetInstanceProcAddr(VK_NULL_HANDLE, "vkEnumerateInstanceVersion") call
2022-01-25 11:16:47.559 28652-28652/name.jinleili.wgpu E/vulkan: invalid vkGetInstanceProcAddr(VK_NULL_HANDLE, "vkEnumerateInstanceVersion") call
2022-01-25 11:16:47.559 28652-28652/name.jinleili.wgpu D/vndksupport: Loading /vendor/lib64/hw/vulkan.msm8992.so from current namespace instead of sphal namespace.
2022-01-25 11:16:47.593 28652-28688/name.jinleili.wgpu I/zygote64: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2022-01-25 11:16:47.633 28652-28688/name.jinleili.wgpu I/OpenGLRenderer: Initialized EGL, version 1.4
2022-01-25 11:16:47.633 28652-28688/name.jinleili.wgpu D/OpenGLRenderer: Swap behavior 2
2022-01-25 11:16:47.640 28652-28652/name.jinleili.wgpu D/vulkan: searching for layers in '/data/app/name.jinleili.wgpu-r_A_rGDAnxmKBFiTtoTgZQ==/lib/arm64'
2022-01-25 11:16:47.640 28652-28652/name.jinleili.wgpu D/vulkan: searching for layers in '/data/app/name.jinleili.wgpu-r_A_rGDAnxmKBFiTtoTgZQ==/base.apk!/lib/arm64-v8a'
2022-01-25 11:16:47.641 28652-28652/name.jinleili.wgpu I/wgpu_hal::vulkan::ins..: Unable to find extension: VK_EXT_debug_utils
2022-01-25 11:16:47.642 28652-28652/name.jinleili.wgpu W/wgpu_hal::vulkan::ins..: Unable to find layer: VK_LAYER_KHRONOS_validation
2022-01-25 11:16:47.642 28652-28652/name.jinleili.wgpu I/Adreno: QUALCOMM build          : 8e59954, I0be83d0d26
    Build Date              : 09/22/17
    Shader Compiler Version : EV031.21.02.02
    Local Branch            : O17A
    Remote Branch           : 
    Remote Branch           : 
    Reconstruct Branch      : 
2022-01-25 11:16:47.645 28652-28652/name.jinleili.wgpu I/wgpu_hal::vulkan::ins..: Instance version: 0x400000
2022-01-25 11:16:47.648 28652-28652/name.jinleili.wgpu W/wgpu_hal::vulkan::ada..: sample_rate_shading feature is not supported, hiding adapter: Adreno (TM) 418
2022-01-25 11:16:47.654 28652-28652/name.jinleili.wgpu A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 28652 (e.jinleili.wgpu), pid 28652 (e.jinleili.wgpu)
	
@kvark
Copy link
Member

kvark commented Jan 25, 2022

Looks like this device is not able to support WebGPU proper. But we should add a downlevel capability for this sample interpolation stuff, so that we can support it.
If you want to try, see

pub struct DownlevelFlags: u32 {

The flag could be named like "MULTISAMPLED_SHADING". We'll need validation, but even if you just add a flag, it will be mergeable, and will make it work for your device.

@kvark kvark added area: api Issues related to API surface good first issue Good for newcomers type: enhancement New feature or request labels Jan 25, 2022
@jinleili
Copy link
Contributor Author

jinleili commented Jan 26, 2022

Added the DownlevelFlag locally, then failed at request_device():

2022-01-26 15:49:56.664 20215-20215/name.jinleili.wgpu I/wgpu_core::instance: Adapter Vulkan AdapterInfo { name: "Adreno (TM) 418", vendor: 20803, device: 67176448, device_type: IntegratedGpu, backend: Vulkan }
2022-01-26 15:49:56.664 20215-20215/name.jinleili.wgpu W/wgpu_hal::vulkan::ada..: Missing extensions: ["VK_KHR_maintenance2", "VK_EXT_sampler_filter_minmax", "VK_KHR_timeline_semaphore"]
2022-01-26 15:49:56.664 20215-20215/name.jinleili.wgpu D/wgpu_hal::vulkan::ada..: Supported extensions: ["VK_KHR_swapchain", "VK_KHR_maintenance1", "VK_KHR_storage_buffer_storage_class"]
2022-01-26 15:49:56.665 20215-20215/name.jinleili.wgpu W/wgpu_hal::vulkan: Unrecognized device error ERROR_FEATURE_NOT_PRESENT
2022-01-26 15:49:56.665 20215-20215/name.jinleili.wgpu E/wgpu::backend::direct: Error in Adapter::request_device: connection to device was lost during initialization
2022-01-26 15:49:56.666 20215-20215/name.jinleili.wgpu A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 20215 (e.jinleili.wgpu), pid 20215 (e.jinleili.wgpu)

Searched ERROR_FEATURE_NOT_PRESENT from ash, which means Requested feature is not available on this device , but features I set is empty:

wgpu::DeviceDescriptor {
	label: None,
	features: wgpu::Features::default(),
	limits: wgpu::Limits::downlevel_webgl2_defaults(),
}

Also, I have a confusion about download_flags, my understanding is: when a feature is not available, need to set a downlevel_flag for it. But following code means: when feature is not available, remove download_flag for it. What is wrong with my understanding?

dl_flags.set(Df::CUBE_ARRAY_TEXTURES, self.core.image_cube_array != 0);

@enfipy
Copy link

enfipy commented Jan 26, 2022

I also ran into this problem when building bevy for android. Here are my logs (logs from Apple M1 Android Emulator, also tried on Xiaomi Poco m3):

01-26 17:20:07.626 10589 10611 I RustStdoutStderr: Initialization.
01-26 17:20:09.754 10589 10612 D HostConnection: HostConnection::get() New Host Connection established 0xb400007a8adb2d90, tid 10612
01-26 17:20:09.775 10589 10612 D HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer ANDROID_EMU_vulkan_ignored_handles ANDROID_EMU_has_shared_slots_host_memory_allocator ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data ANDROID_EMU_read_color_buffer_dma GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_async_frame_commands ANDROID_EMU_gles_max_version_3_0 
01-26 17:20:09.868 10589 10612 D vulkan  : searching for layers in '/data/app/~~Ic9PmsYRgMUdibKAt1qNVA==/com.rust.bevy_2d-7ep_sNZgtpmg5CAoffFySQ==/lib/arm64'
01-26 17:20:09.875 10589 10612 D vulkan  : searching for layers in '/data/app/~~Ic9PmsYRgMUdibKAt1qNVA==/com.rust.bevy_2d-7ep_sNZgtpmg5CAoffFySQ==/base.apk!/lib/arm64-v8a'
01-26 17:20:09.984 10589 10612 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 17:20:09.985 10589 10612 I chatty  : uid=10189(com.rust.bevy_2d) identical 2 lines
01-26 17:20:09.985 10589 10612 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 17:20:09.995 10589 10612 I Gralloc4: mapper 4.x is not supported
01-26 17:20:09.997 10589 10612 D HostConnection: createUnique: call
01-26 17:20:10.005 10589 10612 D HostConnection: HostConnection::get() New Host Connection established 0xb400007a8adb4110, tid 10612
01-26 17:20:10.005 10589 10612 D goldfish-address-space: allocate: Ask for block of size 0x100
01-26 17:20:10.005 10589 10612 D goldfish-address-space: allocate: ioctl allocate returned offset 0x1f3ff8000 size 0x8000
01-26 17:20:10.010 10589 10612 I event /Users/enfipy/.cargo/git/checkouts/bevy-9e7f3777171ea74d/2b23b59/crates/bevy_render/src/ AdapterInfo { name: "Apple M1", vendor: 4203, device: 41280, device_type: VirtualGpu, backend: Vulkan }
01-26 17:20:10.011 10589 10612 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 17:20:10.033 10589 10611 I RustStdoutStderr: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RequestDeviceError', /Users/enfipy/.cargo/git/checkouts/bevy-9e7f3777171ea74d/2b23b59/crates/bevy_render/src/renderer/mod.rs:110:10
01-26 17:20:10.033 10589 10611 I RustStdoutStderr: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
01-26 17:20:10.022 10589 10612 I chatty  : uid=10189(com.rust.bevy_2d) identical 4 lines
01-26 17:20:10.022 10589 10612 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 17:20:10.033 10589 10611 I RustStdoutStderr: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RequestDeviceError', /Users/enfipy/.cargo/git/checkouts/bevy-9e7f3777171ea74d/2b23b59/crates/bevy_render/src/renderer/mod.rs:110:10
01-26 17:20:10.033 10589 10611 I RustStdoutStderr: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
01-26 17:20:10.033 10589 10612 E log event:  Error in Adapter::request_device: connection to device was lost during initializationlog.target = "wgpu::backend::direct"; log.module_path = "wgpu::backend::direct"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.12.0/src/backend/direct.rs"; log.line = 828;
01-26 17:20:10.033 10589 10611 I RustStdoutStderr: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RequestDeviceError', /Users/enfipy/.cargo/git/checkouts/bevy-9e7f3777171ea74d/2b23b59/crates/bevy_render/src/renderer/mod.rs:110:10
01-26 17:20:10.033 10589 10611 I RustStdoutStderr: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I didn't face request_adapter() error but only request_device().

@kvark
Copy link
Member

kvark commented Jan 26, 2022

@jinleili the Vulkan backend needs to initialize differently with this feature:

.sample_rate_shading(true)

This line would become:

                .sample_rate_shading(downlevel_flags.contains(wgt::DownlevelFlags::MULTISAMPLED_SHADING),)

Also, I have a confusion about download_flags, my understanding is: when a feature is not available, need to set a downlevel_flag for it. But following code means: when feature is not available, remove download_flag for it. What is wrong with my understanding?

Like with other features, including cargo features, the flag is set when a feature is supported.

@enfipy

Would you be able to provide logs with RUST_LOG=wgpu_hal=debug?

@enfipy
Copy link

enfipy commented Jan 26, 2022

@kvark Sure.

01-26 22:11:29.912  6675  6698 I RustStdoutStderr: Initialization.
01-26 22:11:32.319  6675  6699 D event /Users/enfipy/.cargo/git/checkouts/bevy-bcd730302c0d4a55/485f524/crates/bevy_app/src/plu added plugins ...
01-26 22:11:32.591  6675  6699 D HostConnection: HostConnection::get() New Host Connection established 0xb40000761b956c90, tid 6699
01-26 22:11:32.609  6675  6699 D HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer ANDROID_EMU_vulkan_ignored_handles ANDROID_EMU_has_shared_slots_host_memory_allocator ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data ANDROID_EMU_read_color_buffer_dma GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_async_frame_commands ANDROID_EMU_gles_max_version_3_0 
01-26 22:11:32.622  6675  6699 D vulkan  : searching for layers in '/data/app/~~_FSDxZT91isXxTVrtWz5sQ==/com.rust.bevy_2d-EKuZQCyFXue5-LTpyjZUfQ==/lib/arm64'
01-26 22:11:32.623  6675  6699 D vulkan  : searching for layers in '/data/app/~~_FSDxZT91isXxTVrtWz5sQ==/com.rust.bevy_2d-EKuZQCyFXue5-LTpyjZUfQ==/base.apk!/lib/arm64-v8a'
01-26 22:11:32.720  6675  6699 I log event:  Unable to find extension: VK_EXT_debug_utilslog.target = "wgpu_hal::vulkan::instance"; log.module_path = "wgpu_hal::vulkan::instance"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-hal-0.12.2/src/vulkan/instance.rs"; log.line = 170;
01-26 22:11:32.722  6675  6699 W log event:  Unable to find layer: VK_LAYER_KHRONOS_validationlog.target = "wgpu_hal::vulkan::instance"; log.module_path = "wgpu_hal::vulkan::instance"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-hal-0.12.2/src/vulkan/instance.rs"; log.line = 512;
01-26 22:11:32.755  6675  6699 I log event:  Instance version: 0x401000log.target = "wgpu_hal::vulkan::instance"; log.module_path = "wgpu_hal::vulkan::instance"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-hal-0.12.2/src/vulkan/instance.rs"; log.line = 192;
01-26 22:11:32.755  6675  6699 I log event:  Enabling device properties2log.target = "wgpu_hal::vulkan::instance"; log.module_path = "wgpu_hal::vulkan::instance"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-hal-0.12.2/src/vulkan/instance.rs"; log.line = 233;
01-26 22:11:32.979  6675  6699 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 22:11:32.983  6675  6699 I chatty  : uid=10192(com.rust.bevy_2d) identical 2 lines
01-26 22:11:32.987  6675  6699 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 22:11:33.019  6675  6699 I Gralloc4: mapper 4.x is not supported
01-26 22:11:33.021  6675  6699 D HostConnection: createUnique: call
01-26 22:11:33.023  6675  6699 D HostConnection: HostConnection::get() New Host Connection established 0xb40000761b954c50, tid 6699
01-26 22:11:33.023  6675  6699 D goldfish-address-space: allocate: Ask for block of size 0x100
01-26 22:11:33.024  6675  6699 D goldfish-address-space: allocate: ioctl allocate returned offset 0x1f3ff8000 size 0x8000
01-26 22:11:33.067  6675  6699 I log event:  Adapter Vulkan AdapterInfo { name: "Apple M1", vendor: 4203, device: 41280, device_type: VirtualGpu, backend: Vulkan }log.target = "wgpu_core::instance"; log.module_path = "wgpu_core::instance"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-core-0.12.2/src/instance.rs"; log.line = 597;
01-26 22:11:33.086  6675  6699 I event /Users/enfipy/.cargo/git/checkouts/bevy-bcd730302c0d4a55/485f524/crates/bevy_render/src/ AdapterInfo { name: "Apple M1", vendor: 4203, device: 41280, device_type: VirtualGpu, backend: Vulkan }
01-26 22:11:33.100  6675  6699 W log event:  Missing extensions: ["VK_EXT_sampler_filter_minmax", "VK_KHR_timeline_semaphore"]log.target = "wgpu_hal::vulkan::adapter"; log.module_path = "wgpu_hal::vulkan::adapter"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-hal-0.12.2/src/vulkan/adapter.rs"; log.line = 1052;
01-26 22:11:33.100  6675  6699 D log event:  Supported extensions: ["VK_KHR_swapchain"]log.target = "wgpu_hal::vulkan::adapter"; log.module_path = "wgpu_hal::vulkan::adapter"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-hal-0.12.2/src/vulkan/adapter.rs"; log.line = 1055;
01-26 22:11:33.101  6675  6699 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 22:11:33.101  6675  6699 I chatty  : uid=10192(com.rust.bevy_2d) identical 4 lines
01-26 22:11:33.101  6675  6699 D goldfish_vulkan: on_vkEnumerateDeviceExtensionProperties: host has ext semaphore? win32 0 posix 0
01-26 22:11:33.117  6675  6699 W log event:  Unrecognized device error ERROR_FEATURE_NOT_PRESENTlog.target = "wgpu_hal::vulkan"; log.module_path = "wgpu_hal::vulkan"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-hal-0.12.2/src/vulkan/mod.rs"; log.line = 675;
01-26 22:11:33.118  6675  6699 E log event:  Error in Adapter::request_device: connection to device was lost during initializationlog.target = "wgpu::backend::direct"; log.module_path = "wgpu::backend::direct"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.12.0/src/backend/direct.rs"; log.line = 828;
01-26 22:11:33.123  6675  6698 I RustStdoutStderr: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RequestDeviceError', /Users/enfipy/.cargo/git/checkouts/bevy-bcd730302c0d4a55/485f524/crates/bevy_render/src/renderer/mod.rs:110:10
01-26 22:11:33.123  6675  6698 I RustStdoutStderr: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
01-26 22:11:33.251  6675  6699 I log event:  Dropping Globallog.target = "wgpu_core::hub"; log.module_path = "wgpu_core::hub"; log.file = "/Users/enfipy/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-core-0.12.2/src/hub.rs"; log.line = 904;

@jinleili
Copy link
Contributor Author

@kvark My changes are like this:jinleili@94b6bad , and failed at request_device().

@kvark
Copy link
Member

kvark commented Jan 27, 2022

@enfipy thank you! Would you mind attaching a vulkaninfo output from this platform setup?

@kvark
Copy link
Member

kvark commented Jan 27, 2022

@jinleili changes look good, mind turning them into a PR?

@enfipy
Copy link

enfipy commented Jan 27, 2022

@kvark I think this info will help - https://gist.github.com/enfipy/e2088afd4100b36db6248b07499bb215 from adb shell cmd gpu vkjson - as mentioned here.

Also, we succeed in running bevy (with wgpu underlying) on Xiaomi Poco m3, but it looks like on some other systems we can't (like Xiaomi Redmi 5 and I guess some other). I will try to get the same info from not working smartphones later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: api Issues related to API surface good first issue Good for newcomers type: enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants