Request: SC200PC (module KAFC917) support on Panther Lake / IPU75XA — Samsung Galaxy Book6 Ultra

未关闭
#74 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
45/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
cpp, linux

调研方向

Start with the existing config/linux/ipu75xa/sensors/ files and the current Linux graph tooling, using the requested staticGraphCommonHashCode 929000173 as the compatibility target. Prepare sc200pc-uf.json and the SC200PC_KAFC917.IPU75XA.bin configuration, then test capture and PSYS behaviour on the Samsung Galaxy Book6 Ultra. Done means the hardware camera uses the IPU7 hardware ISP successfully and the requested files are redistributable.

由索引模型根据 Issue 内容生成。

描述

Summary

The front camera of the Samsung Galaxy Book6 Ultra is a SmartSens SC200PC (module KAFC917) on IPU7.5 (Panther Lake). Intel's Windows driver package for this laptop already contains the tuning and graph settings for it. Could a Linux build of the same configuration, i.e. SC200PC_KAFC917.IPU75XA.bin and sc200pc-uf.json, be added to this repository?

Update: in the meantime I converted the Windows files so they run with this HAL, and the camera now streams through the PSYS. This is a proof of concept, not a fix. Most of it came from trial and error and from comparing against Intel's Linux graphs, so I don't fully know why each change is needed, or whether the result is correct beyond "frames come out and look reasonable". Details, and the questions it leaves open, are below. A review, or an official configuration, would be very welcome.

Hardware

  • Laptop: Samsung Galaxy Book6 Ultra, PAMC-960UJH-PTLH-0, BIOS PAMC.1.4.49.421
  • SoC: Intel Panther Lake, IPU7.5 at PCI 0000:00:05.0 (device 0xb05d)
  • Sensor: SmartSens SC200PC, ACPI SSLC2000, I2C 0x36, chip ID 0x0b71
  • Link: MIPI CSI-2 D-PHY, 2 lanes, CSI port 0, 832 Mbps/lane (link frequency 416 MHz)
  • Mode: 1928x1088 RAW10, BGGR, 30 fps. The sensor is linear; sc200pc.sys has only 1928x1088 at 30 and 15 fps and no DOL mode.

Linux setup

  • Ubuntu 26.04, kernel 7.0.0-34: in-tree intel-ipu7 / intel-ipu7-isys, Ubuntu's intel-ipu7-psys from linux-modules-ipu7-generic, and ipu7ptl_fw.bin from linux-firmware (PSYS 1.2.1.251215214352)
  • An open-source V4L2 driver for the SC200PC, plus an SSLC2000 entry in ipu_bridge
  • This HAL at e5172cc (PTL release 2025-12-10), ipu7-camera-bins ed16ac7, icamerasrc 4fb31db

What the Windows driver package contains

sc200pc.inf (Provider: Intel Corporation, DriverVer 11/17/2025, 71.26100.0.11, HW ID ACPI\SSLC2000) installs:

File SHA-256
SC200PC_KAFC917_PTL.aiqb 65b75702f33e880f9976cf51a3afa41e577dd33c1f1995e9a9fdfd1e29e5c99e
SC200PC_KAFC917_PTL.cpf 4945a3850729c9484078bd4420fa2a601f2c43afeaaef43fa1751199b5ec8cd0
graph_settings_SC200PC_KAFC917_PTL.bin acd119628426009170a12ee86ed7fa7e1bd7650e259339b43551b4685f8c9bd0

How the Windows files are adapted

The repo converts the two Windows files at build time. These are the changes that seem to be needed:

  1. Hashes. The graph settings file has exactly the layout of this repo at e5172cc: header, 116-byte GraphConfigurationHeader, and sizeof(GraphConfiguration100032) 6244 and 100035 248. Only the hashes differ: common 1550038503 vs 1110027246, graph 100032 3891494696 vs 611075083, and graph 100035 419742221 vs 1527132867. Once they're replaced, StaticGraphReader loads the file.
  2. Linear graph instead of DOL. Every setting uses graph 100032 (Dol2Inputs_NoDvs_WithTnr), but the sensor is linear. Each setting is rebuilt as graph 100002 (Isys → LbffBayer → BbpsWithTnr):
    • Kernels are matched by UUID, and their system API blobs are carried over unchanged.
    • The DOL flags in the LBFF kernels are cleared.
    • The BBPS output link runs in streaming mode, and the stream ID is 60001, as in Intel's own 100002 graphs.
  3. Unpacked ISYS input. The input feeder (ifd) configuration seems to expect packed ISYS output: 10-bit pixels packed 25 to 32 bytes, stride 2496. The in-tree ISYS delivers unpacked 16-bit samples, stride 3904. The stride, bits per pixel and a few related words are set to the values Intel's Linux graphs use. Without this, the PSYS accepted the first task and never completed it, with no error.
  4. Tuning. The .aiqb loads, but its LAIQ record 0x108 is version 103, which the AIC in ed16ac7 doesn't seem to support. 0x108, 0x104 and 0x10c are taken from OV08X40_KAFE799_PTL.aiqb, which roughly halved the colour noise. The AE exposure plan is stretched to use the full frame before gain.
  5. HAL. isSameStreamConfig accepts SBGGR10 as SGRBG10 (the graph's LBFF input crop starts one row down), and the AIC input timestamp is set, since it was left at 0.

Several of these values were copied from Intel's graphs by comparison rather than understood, including the ifd words and a BBPS flag bit. Using another sensor's tuning records can't be right either.

Result

In normal use it gives a usable picture with plausible colour. It's still noisier than Windows in low light, and I don't know whether that comes from the tuning swap, from the conversion, or from something else. Temporal noise reduction seems weak, for example.

The code is in https://github.com/MarcoGlauser/galaxybook6-ultra-camera (ipu7-hal/). The Windows files aren't redistributed; the installer fetches them from Samsung's driver download.

Open questions

  • Is rewriting the ifd configuration for unpacked input the right approach? Or is there a supported way to get packed output from the in-tree ISYS, so a Windows-generated graph could be used unchanged?
  • Is rebuilding a DOL graph as graph 100002 valid at all, given the system API blobs were generated for 100032?
  • Will a future AIC release read LAIQ record 0x108 version 103?
  • Does Samsung's tuning depend on anything this conversion drops or changes?

Request

  1. SC200PC_KAFC917.IPU75XA.bin, generated for the current HAL. That would replace the conversion above.
  2. config/linux/ipu75xa/sensors/sc200pc-uf.json. I have a working one and can contribute it.
  3. SC200PC_KAFC917_PTL.aiqb alongside it, if it can be redistributed, ideally in a version the Linux AIC fully supports.

I can test on the hardware and report back.

Related issues

https://github.com/intel/ipu7-drivers/issues/73

主要语言
C++
星标
10
派生
29
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

intel/ipu7-camera-hal 的其他 Issue

查看 intel/ipu7-camera-hal 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。