update software documentation
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
.docname {Keychron Keyboard}
|
||||
.include {docs}
|
||||
|
||||
# Keychron Keyboard
|
||||
|
||||
To enable access to the keyboard for the QMK launcher (or similar programs), set the following udev rule in
|
||||
`/etc/udev/rules.d/99-keychron.conf`
|
||||
|
||||
```
|
||||
# The Keyboard Itself
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0aa1", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
|
||||
# The 2.4 Ghz Wireless Dongle
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="d030", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
|
||||
```
|
||||
|
||||
Values for `idVendor` and `idProduct` can be found with `lsusb | grep -i Keychron`.
|
||||
|
||||
Reload the udev rules `udevadm control --reload-rules`
|
||||
|
||||
## Firmware Updates
|
||||
|
||||
To enable firmware updates, install `yay -S dfu-util` to provide the required toolbox.
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
.docname {XPS 13 9350 (2024)}
|
||||
.include {docs}
|
||||
|
||||
## Sound
|
||||
|
||||
Install the firmware `sof-firmware`
|
||||
|
||||
## Camera
|
||||
|
||||
The camera, while available on free software and without drivers,
|
||||
produces a very bad, raw image with green tint.
|
||||
|
||||
To have a higher quality, we need to install a custom intel
|
||||
driver.
|
||||
|
||||
Install `linux-firmware-intel libcamera-tools dkms linux-headers intel-vision-drivers-dkms-git pipewire-libcamera`.
|
||||
|
||||
Make sure that the `intel_cvs` kernel module (and dependency) is loaded:
|
||||
|
||||
`/etc/modules-load.d/intel_cvs.conf`:
|
||||
```txt
|
||||
gpio_ljca
|
||||
usb_ljca
|
||||
intel_cvs
|
||||
```
|
||||
|
||||
After rebooting `cam -l` should show `1: Internal front camera (\_SB_.LINK1)`
|
||||
after some warnings. `qcam` should start a raw camera stream.
|
||||
The raw camera stream will have a greenish tint.
|
||||
|
||||
> Note: The Intel Vision Driver module must already be loaded when the ov02c10 sensor is probed.
|
||||
> If you cannot see your camera, run `rmmod ov02c10` && `modprobe ov02c10` as root and try again.
|
||||
|
||||
For Firefox, open about:config (See Firefox#Configuration) and set media.webrtc.camera.allow-pipewire to "True".
|
||||
|
||||
For Chromium, enable the flag enable-webrtc-pipewire-camera in chrome://flags/ or set it in your configuration file.
|
||||
|
||||
### Proprietary Hardware Stack
|
||||
|
||||
The proprietary hardware stack requires additional components to be installed and configured,
|
||||
but it provides substantially better video quality vs using only open source drivers and software.
|
||||
First ensure that the above steps are complete at least to the point where qcam shows a raw camera stream.
|
||||
|
||||
Download `intel-ipu7-dkms-git` and modify the PKBUILD file.
|
||||
|
||||
```sh
|
||||
mkdir ~/.camera_driver
|
||||
cd ~/.camera_driver
|
||||
git clone https://aur.archlinux.org/intel-ipu7-dkms-git.git
|
||||
cd intel-ipu7-dkms-git
|
||||
nvim PKGBUILD
|
||||
```
|
||||
|
||||
- remove the dependency `intel-ivsc-firmware` from the `depends` section.
|
||||
- Change `source=("git+${url}")` to instead point to a specific commit and
|
||||
add a patch file to it
|
||||
`source=("git+https://github.com/intel/ipu7-drivers.git#commit=77e3a0065697314cc7437a6eefd7e0d36ab06a4b" "https://patch-diff.githubusercontent.com/raw/intel/ipu7-drivers/pull/67.patch")`
|
||||
- Add another `'SKIP'` to `sha256sums`
|
||||
- In the `prepare()` section, apply the patch: `patch -Np1 -i ../67.patch`
|
||||
|
||||
Here is the pkgfile
|
||||
|
||||
```sh
|
||||
# Maintainer: Yamada Hayao <shun819.mail@gmail.com,>
|
||||
# Contributer: Karim Vergnes <me@thesola.io>
|
||||
|
||||
pkgname=intel-ipu7-dkms-git
|
||||
_pkgname=ipu7-drivers
|
||||
pkgver=r77.77e3a00
|
||||
pkgrel=1
|
||||
pkgdesc="Intel IPU7 camera drivers (DKMS)"
|
||||
arch=('any')
|
||||
url="https://github.com/intel/${_pkgname}"
|
||||
license=('unknown')
|
||||
depends=('dkms')
|
||||
provides=('intel-ivsc-driver-dkms-git' 'intel-ipu7-dkms')
|
||||
conflicts=('intel-ivsc-driver-dkms-git')
|
||||
makedepends=('git')
|
||||
source=("git+https://github.com/intel/ipu7-drivers.git#commit=77e3a0065697314cc7437a6eefd7e0d36ab06a4b" "https://patch-diff.githubusercontent.com/raw/intel/ipu7-drivers/pull/67.patch")
|
||||
sha256sums=('SKIP' 'SKIP')
|
||||
|
||||
pkgver() {
|
||||
cd $_pkgname
|
||||
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
|
||||
}
|
||||
|
||||
prepare() {
|
||||
cd "$srcdir/$_pkgname"
|
||||
patch -Np1 -i ../67.patch
|
||||
sed -i "s/^PACKAGE_VERSION=\".*\"$/PACKAGE_VERSION=\"$pkgver\"/g" ./dkms.conf
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$srcdir"
|
||||
install -dm755 "$pkgdir/usr/src"
|
||||
cp -rT "$_pkgname" "$pkgdir/usr/src/$_pkgname-$pkgver"
|
||||
}
|
||||
```
|
||||
|
||||
Run the package build and install
|
||||
|
||||
- `makepkg --syncdeps`
|
||||
- `makepkg --install`
|
||||
|
||||
Install `intel-ipu7-camera-hal-git`
|
||||
|
||||
Download `icamerasrc-git` and modify the PKBUILD file.
|
||||
|
||||
```sh
|
||||
cd ~/.camera_driver
|
||||
git clone https://aur.archlinux.org/icamerasrc-git.git
|
||||
cd icamerasrc-git
|
||||
nvim PKGBUILD
|
||||
```
|
||||
|
||||
- replace dpendency `ipu6-camera-hal` with `ipu7-camera-hal`
|
||||
|
||||
Run the package build and install
|
||||
|
||||
- `makepkg --syncdeps`
|
||||
- `makepkg --install`
|
||||
|
||||
### Config Files
|
||||
|
||||
Make sure that the kernel modules load in the correct order
|
||||
Remove the file `/etc/modules-load.d/intel_cvs.conf`.
|
||||
|
||||
Create the file `/etc/modprobe.d/90-ipu7-usbio-order.conf` with
|
||||
|
||||
```txt
|
||||
softdep intel_ipu7 pre: usbio gpio_usbio i2c_usbio intel_cvs intel_skl_int3472_discrete
|
||||
```
|
||||
|
||||
Create the file `/usr/lib/udev/rules.d/90-ipu7-psys.rules`
|
||||
|
||||
```txt
|
||||
KERNEL=="ipu7-psys0", MODE="0666", SYMLINK+="ipu-psys0"
|
||||
```
|
||||
|
||||
Reboot the system.
|
||||
|
||||
Check that the camera is now working with
|
||||
|
||||
```sh
|
||||
gst-launch-1.0 -v icamerasrc ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! videoconvert ! videoflip method=rotate-180 ! waylandsink
|
||||
```
|
||||
|
||||
### V4L2 Relay
|
||||
|
||||
Now, we can create a V4L2 loopback device that presents the gstreamer/icamerasrc stream when activated.
|
||||
|
||||
Install `v4l2-relayd`.
|
||||
|
||||
Create the following file to instantiate the virtual v4l2loopback device on boot:
|
||||
|
||||
`/etc/modprobe.d/v4l2loopback.conf`:
|
||||
|
||||
```txt
|
||||
options v4l2loopback card_label="Intel IPU7 Virtual Camera"
|
||||
```
|
||||
|
||||
Create the systemd service file for the relay.
|
||||
|
||||
`/etc/v4l2-relayd.d/intel-ipu.conf`
|
||||
|
||||
```ini
|
||||
VIDEOSRC="icamerasrc device-name=ov02c10-uf ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! videoconvert ! videoflip method=rotate-180"
|
||||
FORMAT=NV12
|
||||
WIDTH=1920
|
||||
HEIGHT=1080
|
||||
FRAMERATE=30/1
|
||||
CARD_LABEL="Intel IPU7 Virtual Camera"
|
||||
```
|
||||
|
||||
Next, enable the `v4l2-relayd@intel-ipu.service`.
|
||||
|
||||
After restarting your machine, any supported applications should see your camera as a standard V4L2 device with wide support.
|
||||
Reference in New Issue
Block a user