bq-paella has an external speaker amplifier connected to the right
channel of the headphones output. Add an extra UCM configuration
to handle this properly.
Just got done with my second port of postmarketOS, here's the device:
Amazon Fire 7 (2019) postmarketOS
Mediatek MT8163
600x1024 display
1GB RAM
Linux 4.9.77 (downstream kernel)
Untested:
- Wi-Fi
- Audio
Pretty much everything else
Works:
- Boots
- Touchscreen
- Battery percentage seems to show in Xfce
I cannot test on most of them (at the moment), but I was involved
in porting all of them so I could "guess" certain changes at least.
[ci:skip-vercheck]: just moved and some maintainers
a5lte and a5ulte are almost identical hardware-wise, the separate
package is mainly necessary because they use different firmware
signatures.
Alexey Min agreed to do some testing occasionally :)
I noticed that the Samsung i9003 is actually a heimdall-bootimg device.
But at the same time, the kernel is assembled as if it is isorec.
[ci:skip-build]: already built successfully in CI
Update to a new kernel based on v5.7-rc6, adding the following new
features:
* Remoteproc support and firmware loading
* Panel drivers for OnePlus 6/T
* Adreno 630 support
* Anbox support
The new firmware-oneplus-sdm845 is required for these features and
devices will not have working display output without firmware
[ci:skip-build] Already built on CI
Generating a sparse rootfs speeds up flashing through Fastboot.
Also change some bootimg offsets to be more accurate to the one
actually used by the bootloader. (They will actually just be ignored,
since the bootloader always uses its own hard-coded ones.)
Make voice call audio work out of the box by starting q6voiced on
all installations with the modem. It might be nice to start it only
when oFono is installed and enabled, but q6voiced is quite minimal
so it does not seem worth the effort.
Some of the recommendations have changed upstream and a few devices
should be called differently now. The following changes are made:
- Headphone -> Headphone*s*
(29041c5220/include/use-case.h (L136))
- DigitalMic -> Mic
(1ad660ddee)
- HeadsetMic -> Headset
(29041c5220/include/use-case.h (L137))
- Add .conf suffix for verb configurations
- Set Playback/CaptureChannels as integer, not as string
- Remove empty Enable/DisableSequence sections
(d6a150d34f)
At the moment we have Contributor: lines on some packages (but not all of them),
but often they don't represent the actual contributors to the package very well.
E.g. when we added them retroactively to the device packages we only added
the initial contributor (which isn't necessarily the person
who made most of the work for a device...)
The Git history is the most representative source for figuring out
who contributed to a package, so there is no reason to duplicate that
into the APKBUILD.
[skip ci]: way too many packages
- Enable speaker on samsung-gt510wifi/matissevewifi
- Replace deprecated mesa-dri-freedreno package with mesa-dri-gallium
- Build natively (this is just a trivial copy)
Changes:
- Add audio package dependency;
- Replace panel driver with one from stock kernel (thanks to bnister);
- Change keyboard layout so it's fully supported in X11.
[ci:skip-build]: already built successfully in CI
This commit adds initial support for sprdphone sound card and sc8830-audio
device. sc8830-audio is common audio device used in different Spreadtrum SoCs.
This configuration was tested on Nobby 230 (SC7715GA), Finepower F1 (SC7731C),
Samsung Galaxy J1 mini (SC8830). It should work for many other SoCs as well.
Now, if someone wants to have somewhat working audio, they just have to add
soc-sprd-audio-sc8830 package to depends of device- package and that's it.
soc-sprd-audio is only for generic configuration (set sprdphone as default
sound card and provide headphone jack detection).
What works:
- Speaker and headphones output;
- Headphone jack detection (based on udev rules from device-xiaomi-santoni);
- Microphone works on both headphones and device itself.
Spotted issues:
- Recording volume is low;
- Recording is done only on right channel.
With the camera driver (VIDEO_EXYNOS_FIMC_IS) enabled, the system
would randomly panic during startup. Even though the camera does
not currently work on this system, the driver is nonetheless enabled
to make the flashlight work.
The panics seem to be triggered by udev's "v4l_id", which queries
capabilities of video4linux devices.
This change adds a udev rules file, to override the behavior of udev's
default rules for v4l.
- Cleanup kernel cmdline:
- earlycon can automatically detect the memory address of
the UART controller based on the device tree
- the comma before n8 in console=ttyMSM0,115200,n8 is actually
invalid so this was not parsed correctly. However, it is the
default anyway so we might as well remove it completely
- Configure deviceinfo_getty for all devices
- Workaround probe issue of display by adding a softdep on the panel
module. This allows the display to work when excluding proprietary
firmware (just a weird side effect, see comment in modprobe.conf...)
The device port gets increasingly hard to maintain with all the differences
between the downstream and the mainline kernel. Especially deviceinfo
has quite some duplication only because the downstream kernel needs to be
handled as well.
The mainline port has much more features working. The only limitation
compared to the downstream kernel is the lack of a proper charging driver.
But even on downstream postmarketOS the battery driver is not working
properly for some reason.
For charging, a downstream installation in recovery seems more suitable
at the moment. Eventually we will build some functionality into the
bootloader to load a simple downstream initramfs when the device gets
booted for charging.
The dts for oneplus bacon was already present in linux-postmarketos.
I adjusted the APKBUILD and deviceinfo to be able to use both downstream and mainline kernels
These changes enable the flashlight LED driver (fled_rt5033), and add
support for switching the light on and off from userspace.
In more detail:
* CONFIG_FLED_RT5033 enables the flashlight driver
* CONFIG_VIDEO_EXYNOS_FIMC_IS is required for the flashlight driver to
compile (there seems to be a lot of cross-dependency between the two
drivers)
* patch 0001 fixes the use of usleep (which no longer exists), to make
the kernel compile with those settings
With these changes, /sys/class/flashlight/rt-flash-led shows up in
sysfs, but it's only possible to control the brightness of the LED,
not to switch it on.
Patch 0002 is what actually makes the flashlight usable: it makes
the /sys/class/flashlight/rt-flash-led/mode file writable.
Writing "Torch" there enables the flashlight, writing "Off" disables
it again. "Mixed" mode works like "Torch" as well. I have not figured
out yet how to trigger the camera flash, so setting the mode to
"Flash" is possible, albeit pointless.
For testing changes for device categorization, it is useful to have
a device in each of the categories. The PinePhone is close to being
moved to main/, but it doesn't fulfill all requirements yet.
The QEMU "device ports" are very simple since QEMU currently only
emulates a rather limited set of hardware features. All available features
are working correctly (especially after the recent rework of the QEMU
packages). I suppose it is also usable as a "daily driver", at least for
its intended purpose (a virtual machine for testing postmarketOS changes). :)
Given that everyone can run QEMU, everyone could potentially maintain
it. For now I have added myself as maintainer since I did most of the
recent cleanup. Add drebrez as second maintainer.
Overall it seems useful to have qemu-* in main/, especially because
it is now the device that is selected by default in pmbootstrap.
linux-samsung-kminilte: adjust paths where the bcmdhd driver expects firmware
device-samsung-kminilte: add "nonfree-firmware" subpackage
firmware-samsung-kminilte: new package
firmware post-install actions:
- enable "deferred-initcalls" in sysinit for wlan0 to be available
- force wpa_supplicant to use wlan0 instead of p2p0
(both based on script from device-samsung-klte package)
[ci:skip-build]: already built successfully in CI
- disable CONFIG_CRYPTO_SHA256_ARM, since it causes the build to fail with:
arch/arm/crypto/sha256-core.S:1831: Error: thumb conditional instruction should be in IT block
This updates google-crosshatch's downstream kernel to Lineage 17.1's
version (4.9.200, shared with Lineage's Pixel 3a port).
The newer kernel is needed because this device's kernel requires a
matching dtbo partition. The previous kernel would fail to boot with an
Android 10 dtbo partition.
Two patches were removed: Android 10's bootloader no longer passes the dm
or skip_initramfs boot arguments because of the new dynamic partitions
(https://source.android.com/devices/tech/ota/dynamic_partitions/ab_legacy).
Changes from the LineageOS kernel config:
https://gist.github.com/zhuowei/89b4135ff27e88f5a3dd3e4bf3cd31ab
Tested by booting to USB networking and debug-shell: I have not tested
flashing full pmOS using this kernel yet.
For some reason, on this kernel, when pmOS can't find system partitions
during the "Trying to mount subpartitions for 10 seconds..." stage, it
waits for 70 seconds instead of 10 seconds. I'm not sure why. It does go
to debug-shell correctly after a minute.
[ci:skip-build]: already built successfully in CI
[skip-ci]: just downloading all kernel sources takes about one hour
and ollieparanoid wants to merge it now. This already ran
successfully with [ci:skip-build] and [ci:skip-vercheck].
mesa-demos is currently broken in Alpine since it needs a rebuild.
However, a device port shouldn't force installation of something like
mesa-demos so we should remove it anyway.
* make modules_initfs same as lg-hammerhead
(fixes postmarketOS splash logos at boot)
* split out downstream-firmware and mainline-firmware
* add firmware-adreno to firmware-mainline subpkg
* prepare deviceinfo file to mainline kernel
These files are just a copy paste of the regular OnePlus 5 ones with
adjusted codename, display name and screen height.
The used kernel is linux-oneplus-msm8998 (shared with cheeseburger).
This is in preparation for adding in support for the OnePlus 5T
(dumpling) on top of the regular OnePlus 5 (cheeseburger).
Both devices use the same kernel so the name change just makes sense.
Might as well update the downstream kernel when someone (nathanchance)
is merging in updates as they come out for the linux-stable 4.4.y series
¯\_(ツ)_/¯
This fixes a bug where the package does not install some files as
expected.
For the librem5 package, this also generates the modemmanager
subpackage, which was missed in testing/review earlier.
This upgrades the package to include:
- Support for usb serial console (only in OS, not in u-boot)
- udev rule to fix phone calls with modemmanager using the
broadmobi modem in the phone
- The beginnings of usb network support (still not functional
yet)
- Enable framebuffer in the deviceinfo, pmos logo on boot!
The udev rule and module configs were gathered from upstream Purism
PureOS.
This adds new subpackages for phosh, plasma, and a new dependency on the
phone device package for wys (in Alpine Linux)
This adds subpackages for pulseaudio, phosh, and plasma mobile, and
includes some configuration files from upstream Purism for udev and
pulseaudio that help with audio a bit (though phone audio routing is
still weird/broken for now..)
The separate subpackages for phosh and plasma are necessary becuase they
each use a different modem handling daemon (modem manager and ofono,
respectively).
Add a vibration feedback, along with the LED feedback when booting.
This is suggested by TL Lim.
When trying to power up the phone with holding it in the hand, vibration
feedback is more obvious than LED.
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Started porting pmOS to Xiaomi Redmi Note 5 Pro (whyred).
What works so far:
- Booting
- SSH over USB
- SD card detection (haven't tried flashing to internal storage because
i'm afraid of bricking the device due to anti-rollback)
- Vibration and LEDs
- Screen
- Hardware buttons
- Touchscreen
Untested:
- WiFi
- Camera
- Audio
- Bluetooth
- GPS
- Calls, SMS, Cellular network
- Proper WiFi support (building modules, firmware package)
- Architecture change to armv7
- Fix no MAC address on USB networking
[ci:skip-build]: already built successfully in CI
The datasheet says that the AT+QDAI audio routing configuration is saved
to non-volatile memory directly, and therefore needs a modem reset to be
applied.
This commits changes the audio routing configuration script to first
check for the current configuration, and only change it if it is
different from the one wanted.
The new configuration is then sent, and modem is reset to apply
configuration.
The pkgrel bump in !1032 got lost during a rebase, rebuild the package to fix:
ERROR: Could not find dependency 'modem-qcom-msm-mainline-common' in any aports folder or APKINDEX.
The pkgrel bump in !1032 got lost during a rebase, rebuild the package to fix:
ERROR: Could not find dependency 'modem-qcom-msm-mainline-common' in any aports folder or APKINDEX.
The pkgrel bump in !1032 got lost during a rebase, rebuild the package to fix:
ERROR: Could not find dependency 'modem-qcom-msm-mainline-common' in any aports folder or APKINDEX.
Combine modem-qcom-msm-{mainline,downstream}-common to a single APKBUILD
with mainline and downstream subpackages.
Enable rmtfs service here instead of directly in the package.
[ci:skip-vercheck]: for qrtr version fix
This device is probably broken at this point, but since we want to
remove linux-postmarketos-mainline/stable it really has best chances
to work (somewhat) on linux-postmarketos-qcom-msm8974.
This commit adds support for the Alcatel OneTouch Pop 7S (pop7lte),
a 2014 MSM8226-based tablet, using manufacturer's downstream kernel.
Currently working: display, USB networking, Weston
Firmware is packaged for WiFi and audio but the downstream kernel tree
doesn't seem to include drivers for the qcom wlan chip, only wcnss.
Additionally, audio mixer config is missing as I haven't been able to
find it in the stock Android 4.2.x ROM's filesystem yet.
Please note that this commit adds support *only* for model P330X,
which is not to be confused with similarly-named incompatible devices,
the Pop 7 (also 2014 w/ MT8312) and the Pop 7 LTE (2016 w/ MSM8909).
Signed-off-by: Lauren Kelly <lauren.kelly@msn.com>
All the downstream kernels reference ../../.shared-patches in their
symlinks. Now that we have moved device ports to device/testing/*,
those symlinks are no longer working.
Changing the path would require fixing all downstream packages *and*
a new pmbootstrap release. Overall it seems easier to move the
.shared-patches folder to device/.shared-patches.
Since it is only relevant for downstream kernel packages in device/
that might be a better place in general.
Prepare for better device categorization by moving everything to testing
subdir first.
[skip-ci]: chicken-egg problem: passing pmaports CI depends on pmbootstrap MR
depends on this MR
Related: postmarketos#16
pmbootstrap now configures consistent QEMU hardware for all architectures.
This means that the device package for amd64/aarch64 is now almost identical,
except for the architecture and the name of the serial port.
pmbootstrap always uses virtio-gpu now (but not necessarily virgl),
so there is only one consistent set of initfs modules we need to configure
for both architectures.
Also add the xfce4 package from amd64 to aarch64, exactly the same
problem with the wallpaper exists there.
We haven't been maintaining linux-postmarketos-mainline/stable very
well. Let's recommend use of one of the Alpine kernels which are actively
updated with new LTS updates (see #464).
This simplifies upcoming refactoring of the QEMU device ports,
which may (or may not) work with the more minimal kernel configurations
in linux-postmarketos-mainline/stable.
For some reason, the default SDL UI has been using 1024x768 for a while
now. This causes the splash screen to look weird because it is too small.
Now that pmbootstrap tries to configure 1024x768 in all cases
we can change the resolution for the device ports.
QEMU has its own DHCP server, which provides the necessary routes
and DNS server to access THE INTERNET. Trying to make QEMU provide
something similar to our usual USB network (by starting our our DHCP
server) will just confuse everything and break Internet access in most
cases.
Remove all our custom setup and let QEMU handle all the hard work.
mesa-dri-swrast and mesa-dri-virtio are actually provided by the same
package in Alpine now, so the selection in pmbootstrap does not have
any use. Always install mesa-dri-gallium instead.
Adds samsung-matissevewifi support using msm8916-mainline/linux kernel.
- Device can boot.
- USB network is working.
- Can connect to device using SSH.
All device ports have been changed in one of the previous commits,
so do one pkgrel bump for all of them using:
$ pmbootstrap pkgrel_bump device-*
[ci:ignore-count]
Attempting to use a stable device path there does not actually work,
so we might as well remove it and hope that directfb can now automatically
detect the touchscreen for osk-sdl.
Most devices do not need to set any of these variables.
directfb can now automatically detect touchscreens, calibration is
only needed for resistive touchscreens and dev_keyboard is unused.
Automatically done using:
- sed -i '/deviceinfo_dev_keyboard=""/d' device-*/deviceinfo
- sed -i '/deviceinfo_dev_touchscreen=""/d' device-*/deviceinfo
- sed -i '/deviceinfo_dev_touchscreen_calibration=""/d' device-*/deviceinfo
Audio stopped working after alsa-lib-1.2.1, this patch fixes it
by adapting it to ucm2 format.
As well as some improvements to HiFi:
- Remove SpeakerMic as it was just HandsetMic without conflict
with Speaker
- Remove some unnecessary conflicts with ports
- Add input/output priorities
Co-Authored-By: Asriel Dreemurr <asriel.danctnix@gmail.com>
This adds basic functionality for the Moto One Hyper.
The device boots with rootfs on sd, booted by 'pmbootstrap flasher boot'.
USB net works, and i can ssh in. There is no framebuffer device, but
weston works with the drm backend instead of fbdev. Touchscreen support
is not implemented yet, but i will update this with support when i get
the chance. Most other functionality either does not seem to work yet or
has not been tested (wifi, audio, modem, etc).
CONFIG options added:
- nvidia tegra partition support (now it's kernel option)
- CONFIG_SECCOMP support (needed for Epiphany and lot of others)
- CONFIG_USER_NS required for bubble wrap (used by Epiphany)
- CONFIG_TEGRA_SOCTHERM as module, required for thermal management
DTS change:
- grouper we all have has codename "tilapia" (w/ GSM), since no-one had "older" grouper
- in future, when we get testing, we'll add "real" grouper (wo/ GSM)
- no functional change in DTS (except wiring SMB347 driver)
Kernel changes:
- added SMB347 driver support (now it's able report charging state)
Signed-off-by: David Heidelberg <david@ixit.cz>
v2:
- Also switch firmware/firmware-asus-flo
- fix linting warnings
device/linux-asus-flo/APKBUILD: IC:[AL6]:device/linux-asus-flo/APKBUILD:36:prefix custom variable with _: HOSTCC="${CC:-gcc}"
IC:[AL6]:device/linux-asus-flo/APKBUILD:37:prefix custom variable with _: HOSTCC="${HOSTCC#${CROSS_COMPILE}}"
IC:[AL6]:device/linux-asus-flo/APKBUILD:39:prefix custom variable with _: ksrcdir="$srcdir/linux-$pkgver"
MC:[AL5]:device/linux-asus-flo/APKBUILD:10:variable set to empty string: depends=""
MC:[AL5]:device/linux-asus-flo/APKBUILD:13:variable set to empty string: install=
MC:[AL5]:device/linux-asus-flo/APKBUILD:30:variable set to empty string: subpackages=""
MC:[AL31]:device/linux-asus-flo/APKBUILD:36:variables must not have capital letters
MC:[AL31]:device/linux-asus-flo/APKBUILD:37:variables must not have capital letters
MP:[AL32]:device/linux-asus-flo/APKBUILD:3:unnecesary usage of braces: ${_flavor}
MP:[AL32]:device/linux-asus-flo/APKBUILD:4:unnecesary usage of braces: ${_flavor}
MP:[AL32]:device/linux-asus-flo/APKBUILD:32:unnecesary usage of braces: ${pkgver}
firmware/firmware-asus-flo/APKBUILD: MC:[AL28]:firmware/firmware-asus-flo/APKBUILD:12:literal integers must not be quoted
MP:[AL32]:firmware/firmware-asus-flo/APKBUILD:15:unnecesary usage of braces: ${_url_aosp}
MP:[AL32]:firmware/firmware-asus-flo/APKBUILD:15:unnecesary usage of braces: ${_version_broadcom}
MP:[AL32]:firmware/firmware-asus-flo/APKBUILD:16:unnecesary usage of braces: ${_url_aosp}
MP:[AL32]:firmware/firmware-asus-flo/APKBUILD:16:unnecesary usage of braces: ${_version_qcom}
MP:[AL32]:firmware/firmware-asus-flo/APKBUILD:22:unnecesary usage of braces: ${_commit_other}
MP:[AL32]:firmware/firmware-asus-flo/APKBUILD:24:unnecesary usage of braces: ${_commit_other}
MP:[AL32]:firmware/firmware-asus-flo/APKBUILD:24:unnecesary usage of braces: ${_url_other}
Signed-off-by: David Heidelberg <david@ixit.cz>
The downstream kernel doesn't provide a separate dtb file,
but the experimental mainline kernel does.
Previously, the deviceinfo specified a dtb file for both kernels,
and pmbootstrap ignored the missing file for downstream kernel.
pmbootstrap now errors when the dtb file is missing, so this
fixes the downstream kernel by specifying a dtb file only for
the upstream kernel.
We should do this in the UI packages that need it rather than in the
device packages themselves because for example Phosh doesn't need Ofono
but ModemManager
* move msm-fb-refresher dependency to downstream kernel package,
it is useless on mainline
* disable msm-fb-refresher service when using libhybris
adaptation, it is only required for downstream kernel *without*
libhybris. It interferes with qcom kgsl-adreno driver badly
(causes screen flickering)
* set CPU governor to conservative on system startup (it lowers
CPU frequency in idle state from initial 2.4 Ghz to 300 MHz)
* add hybris_pulse subpackage that gets installed only when
device-samsung-klte-hybris AND pulseaudio are installed. It
pulls in pulseaudio-modules-droid-7.1-caf and alsa integration
* add system.img symlink to lxc-android installation. With this
you can have Android container successfully running already
at the first boot without need to do it manually. Halium
installation process puts your system.img to /data partition
by default, so follow their recommendation. We can use a
symlink to save some space on /system partition.
[ci:skip-build]: already built successfully in CI