HP Spectre x360 14-ef2xxx: IPU6 Camera "Link has been severed" at VIDIOC_STREAMON
- Dominant language
- C
- Stars
- 251
- Forks
- 75
- PR merge metrics
- No merged PRs in 30d
Description
# HP Spectre x360 14-ef2xxx: IPU6 Camera "Link has been severed" at VIDIOC_STREAMON
(This is written by an LLM after iterating for a few hours with cursor to try and make things work)
## 🖥️ System Information
**Hardware:** HP Spectre x360 14-ef2xxx
**OS:** Ubuntu 24.04 LTS
**Kernel:** 6.14.0-1006-oem (upgraded from 6.11.0-1025-oem)
**Sensor:** Intel HI556 (MIPI)
**ISP:** Intel IPU6-EP
**Architecture:** x86_64
## 🎯 Issue Description
The built-in webcam fails to start streaming with the error "Link has been severed" at VIDIOC_STREAMON. The camera hardware is detected, drivers load correctly, format negotiation succeeds, but streaming is blocked at the firmware level.
## 🔍 Symptoms
### ✅ Working Components
- Kernel drivers load successfully (`intel_ipu6*`, `intel_ipu6_isys`, `intel_ipu6_psys`, `hi556`)
- Device nodes created (`/dev/video1-32`, `/dev/media0`)
- Sensor detected in media topology: `hi556 4-0028`
- Format negotiation succeeds for supported resolutions
- All required camera configuration files (AIQB, XML) are present
### ❌ Failing Components
- **GStreamer pipeline fails:** "Stream config is not supported. format:V4L2_PIX_FMT_NV12 (1920x1080)"
- **Direct V4L2 capture fails:** `VIDIOC_STREAMON returned -1 (Link has been severed)`
- **CamHAL defaults to AR0234 configuration** instead of HI556, even with correct files present
## 📊 Technical Diagnostics
### Media Topology
```bash
# Sensor detection
- entity 233: hi556 4-0028 (1 pad, 1 link, 0 routes)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev4
pad0: Source
[stream:0 fmt:SGRBG10_1X10/2592x1944 field:none]
-> "Intel IPU6 CSI2 3":0 [ENABLED,IMMUTABLE]
```
### Supported Formats (v4l2-ctl -d /dev/video4 --list-formats-ext)
```
[0]: 'BG12' (12-bit Bayer BGBG/GRGR) - Size: Stepwise 2x2 - 4672x3416
[1]: 'GB12' (12-bit Bayer GBGB/RGRG) - Size: Stepwise 2x2 - 4672x3416
[2]: 'BA12' (12-bit Bayer GRGR/BGBG) - Size: Stepwise 2x2 - 4672x3416
[3]: 'RG12' (12-bit Bayer RGRG/GBGB) - Size: Stepwise 2x2 - 4672x3416
[4]: 'BG10' (10-bit Bayer BGBG/GRGR) - Size: Stepwise 2x2 - 4672x3416
[5]: 'GB10' (10-bit Bayer GBGB/RGRG) - Size: Stepwise 2x2 - 4672x3416
[6]: 'BA10' (10-bit Bayer GRGR/BGBG) - Size: Stepwise 2x2 - 4672x3416
[7]: 'RG10' (10-bit Bayer RGRG/GBGB) - Size: Stepwise 2x2 - 4672x3416
[8]: 'BA81' (8-bit Bayer BGBG/GRGR) - Size: Stepwise 2x2 - 4672x3416
[9]: 'GBRG' (8-bit Bayer GBGB/RGRG) - Size: Stepwise 2x2 - 4672x3416
[10]: 'GRBG' (8-bit Bayer GRGR/BGBG) - Size: Stepwise 2x2 - 4672x3416
[11]: 'RGGB' (8-bit Bayer RGRG/GBGB) - Size: Stepwise 2x2 - 4672x3416
[20]: 'UYVY' (UYVY 4:2:2) - Size: Stepwise 2x2 - 4672x3416
[21]: 'YUYV' (YUYV 4:2:2) - Size: Stepwise 2x2 - 4672x3416
```
### Camera Configuration Files
```bash
# AIQB files present
/etc/camera/ipu6ep/HI556_1BG502T3_ADL.aiqb
/etc/camera/ipu6ep/HI556_CJFLE25_ADL.aiqb
/etc/camera/ipu6ep/HI556_CJFME22_ADL.aiqb
/etc/camera/ipu6ep/HI556_H8B5_ADL.aiqb
/etc/camera/ipu6ep/HI556_YHE_ADL.aiqb
# Graph XML files present
/etc/camera/ipu6ep/gcss/graph_settings_HI556_1BG502T3_ADL.xml
/etc/camera/ipu6ep/gcss/graph_settings_HI556_CJFLE25_ADL.xml
/etc/camera/ipu6ep/gcss/graph_settings_HI556_CJFME22_ADL.xml
/etc/camera/ipu6ep/gcss/graph_settings_HI556_H8B5_ADL.xml
/etc/camera/ipu6ep/gcss/graph_settings_HI556_YHE_ADL.xml
# Sensor configuration
/etc/camera/ipu6ep/sensors/hi556-4-0028.xml
/etc/camera/ipu6ep/sensors/hi556-uf.xml
/etc/camera/ipu6ep/sensors/hi556-uf-1.xml
```
## 🔧 Attempted Solutions
### 1. Kernel Updates
- **Initial:** 6.11.0-1025-oem
- **Upgraded to:** 6.14.0-1006-oem
- **Result:** No change in streaming behavior
### 2. Camera Configuration Restoration
- Reinstalled `libcamhal-ipu6ep-common` to restore missing `/etc/camera/` tree
- Extracted additional HI556 blobs from Windows driver package
- **Result:** All required files present, but HAL still defaults to AR0234
### 3. HAL Configuration Override
- Renamed HI556 AIQB to `AR0234_TGL_10bits.aiqb`
- Renamed HI556 XML to `graph_settings_AR0234_TGL_10bits.xml`
- **Result:** HAL loads files but still fails with "Stream config not supported"
### 4. Direct V4L2 Testing
```bash
# Format negotiation succeeds
sudo v4l2-ctl -d /dev/video4 --set-fmt-video=width=2592,height=1944,pixelformat=BG10
# Buffer allocation succeeds
VIDIOC_REQBUFS returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
# Streaming fails
VIDIOC_STREAMON returned -1 (Link has been severed)
```
### 5. GStreamer Pipeline Testing
```bash
# All attempts fail with similar errors
GST_DEBUG=3 gst-launch-1.0 icamerasrc io-mode=4 ! videoconvert ! autovideosink
# Error: Stream config is not supported. format:V4L2_PIX_FMT_NV12 (1920x1080)
# Even with fakesink (no format negotiation)
GST_DEBUG=3 gst-launch-1.0 icamerasrc io-mode=4 ! fakesink silent=true
# Error: Stream config is not supported. format:V4L2_PIX_FMT_NV12 (1920x1080)
```
## 🐛 Error Logs
### CamHAL Debug Output
```
[07-11 23:48:57.92] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
[07-11 23:48:57.99] CamHAL[ERR] Stream config is not supported. format:V4L2_PIX_FMT_NV12 (1920x1080)
[07-11 23:48:57.99] CamHAL[ERR] @configure, analyzeStream failed
[07-11 23:48:57.99] CamHAL[ERR] failed to config streams.
```
### GStreamer Error
```
ERROR: from element /GstPipeline:pipeline0/Gstcamerasrc:camerasrc0: src pad: Internal data flow error.
Additional debug info:
gstcambasesrc.cpp(3156): gst_cam_base_src_loop (): /GstPipeline:pipeline0/Gstcamerasrc:camerasrc0:
streaming task paused, reason not-negotiated (-4)
```
### V4L2 Direct Error
```
VIDIOC_STREAMON returned -1 (Link has been severed)
```
## 🔍 Root Cause Analysis
### Primary Issue
The IPU6 firmware is blocking the stream at the hardware level, even though:
- All user-space configuration is correct
- Kernel drivers are loaded and functional
- Format negotiation succeeds
- Buffer allocation succeeds
### Secondary Issue
The CamHAL is not correctly matching the HI556 sensor to its configuration files, defaulting to AR0234 profile instead.
### Evidence
1. **Hardware Working:** Sensor detected, format negotiation successful
2. **Configuration Complete:** All required blobs and XML files present
3. **Kernel Compatible:** Latest OEM kernel with IPU6 modules
4. **Firmware Blocking:** Stream fails at hardware level, not software
## 🔗 Related Issues
This appears to be part of a broader IPU6 compatibility problem affecting multiple laptop models:
- [#357: Huawei Matebook GT 14's camera doesn't work in Fedora 42](https://github.com/intel/ipu6-drivers/issues/357)
- [#344: Not working on Ubuntu 25.05 with kernel 6.14](https://github.com/intel/ipu6-drivers/issues/344)
- [#331: Intel MIPI Camera on Ubuntu 24.04 with kernel 6.11.0-17-generic does not work](https://github.com/intel/ipu6-drivers/issues/331)
- [#333: Webcam not working in samsung book5 pro 360](https://github.com/intel/ipu6-drivers/issues/333)
## 🎯 Expected Behavior
The camera should start streaming and provide video output through GStreamer or direct V4L2 applications.
## 🔧 Steps to Reproduce
1. Boot HP Spectre x360 14-ef2xxx with Ubuntu 24.04
2. Install latest OEM kernel: `sudo apt install linux-image-6.14.0-1006-oem`
3. Ensure camera configuration files are present in `/etc/camera/ipu6ep/`
4. Run: `GST_DEBUG=3 gst-launch-1.0 icamerasrc io-mode=4 ! videoconvert ! autovideosink`
5. Observe "Link has been severed" error
## 📋 Environment Details
### Kernel Modules
```bash
intel_ipu6_psys 102400 0
intel_ipu6_isys 126976 0
intel_ipu6 73728 2 intel_ipu6_isys,intel_ipu6_psys
ipu_bridge 20480 2 intel_ipu6,intel_ipu6_isys
hi556 24576 0
```
### Device Nodes
```bash
ipu6 (PCI:0000:00:05.0):
/dev/video1 through /dev/video32
/dev/media0
```
### Camera HAL Version
```bash
libcamhal-ipu6ep-common
libcamhal-ipu6ep
libcamhal-ipu6epmtl
```
## 🏷️ Labels
- `bug`
- `ipu6`
- `camera`
- `hi556`
- `firmware`
- `streaming`
- `hardware`
## 📝 Additional Information
- Camera works correctly under Windows (confirmed)
- Issue affects both GStreamer and direct V4L2 applications
- No workarounds found in community forums or documentation
- Similar issues reported across multiple laptop brands with IPU6 cameras
---
**Priority:** High - This is a complete loss of webcam functionality on a premium laptop.
**Impact:** Users cannot use video conferencing, photo capture, or any camera-dependent applications on Linux.
Contributor guide
Assessment
This issue has not been assessed yet.