OpenIndiana Hipster · test package
Xorg 1.19.7 framebuffer fallback (rev 18)
Status: test candidate · VM runtime matrix passed
This is a corrected test build of the Hipster X server, Xorg 1.19.7. It replaces the
withdrawn xorg-autodetect-20261020 kit. It changes one narrow decision: when the
console is the illumos bitmap framebuffer, Xorg uses the generic illumosfb driver
instead of vesa only when the machine has no legacy video BIOS.
You install it into a new boot environment (BE) that is a copy of the system you are running now. You switch to that BE deliberately, and you switch back deliberately. Nothing in this guide relies on a reset or a reboot to return you to your original system. Switching back is its own step.
If you tried the earlier kit
The xorg-autodetect-20261020 package (revision 17) was withdrawn. It could pick
modesetting on machines where the Intel driver had worked, and its guide wrongly promised
that a reboot would return you to your original BE.
Do not use this kit to repair a machine that has revision 17 installed. Keep both of your BEs; do not delete either. Please comment on the pull request and you will get instructions for your specific machine. You do not need to retry or reinstall anything.
What changed
Hipster revision 15 started treating the illumos bitmap console (illumos_fb) as proof
that vesa cannot work. On that console Xorg dropped vesa and fell back to
illumosfb. But the bitmap console appears with a legacy BIOS (VBE) as well as with pure
UEFI (GOP). Many machines still have a legacy video BIOS, and on those vesa works.
illumosfb cannot change modes and stays at the resolution the firmware chose.
This build keeps the normal Xorg order and changes only that fallback:
- PCI-matched drivers come first, as before. For example, a legacy Intel machine
still tries
intel, thenvesa. - Only on an
illumos_fbconsole, Xorg checks for a legacy video BIOS:- present:
vesastays; - cannot tell:
vesastays; - definitely absent:
vesais replaced byillumosfb.
- present:
- Nothing else changes. This build does not pick
modesettingautomatically. ADevicesection that names a driver, including the10-vesa.confworkaround, still takes precedence and bypasses all of this.
The Xorg log now names the console whenever it can read the console identifier, so you can tell whether your machine is affected at all.
Keyboard symptoms reported alongside the display problem have no known connection to this change. This build does not touch keyboard handling. Your before-and-after observations help work out whether they are related.
Who this test is for
Look at your current Xorg log:
grep 'console driver' /var/log/Xorg.0.log
console driver: illumos_fb, and no KMS driver active: you are the target. In particular machines that boot with BIOS, or with UEFI and a compatibility BIOS (CSM), and the HP EliteBook 820 G2 from Redmine #18500. Pure UEFI machines onillumos_fbare wanted too, as a check that they still getillumosfb.- An active KMS driver, regardless of the console line: optional, as regression coverage only. You should see the same driver as before.
console driver: illumos_text: this build does not change your driver choice. Thanks, but you do not need to test.- No such line, with an explicit driver configuration such as
10-vesa.conf: autodetection is bypassed, so this is expected. Record that configuration and leave it in place for the initial trial. If the other preconditions hold, you may continue; Step 8 offers a separate, controlled comparison. - No such line and no known explicit driver configuration: include that in a short comment on the pull request. Please do not start the test.
Do not install this if you run the newer Xorg 21.1 stack. Stay on 21.1; do not downgrade. This kit does not select or switch any DRM driver stack.
The packages are built for current Hipster OS packages. If the dry run in step 4 shows that your system is too old, stop and report it. Do not update or downgrade your OS to make this test fit.
What has been tested so far
The full candidate-list checks pass, including a legacy Intel KMS device that has connectors but no dumb-buffer support. The old KMS shortcut fails that same check. Native builds and package verification pass. An isolated stock IPS image also passed the exact two-package upgrade from revision 16 to 18.
| Configuration | Driver and desktop | Input check | Result |
|---|---|---|---|
| SeaBIOS VM, Xorg 1.19.7 | Automatic vesa, 1920×1200; same with 10-vesa.conf | US; Y types y in both phases | PASS, job 82 |
| OVMF UEFI VM, Xorg 1.19.7 | Automatic illumosfb, 1024×768; same when explicitly selected | US; Y types y in both phases | PASS, job 83 |
| Native bhyve VM, Xorg 1.19.7 | Automatic illumosfb, 1024×768; same when explicitly selected | US; Y types y in both phases | PASS, job 84 |
| X230 KMS, separate Xorg 21.1 companion | Configured modesetting; both displays unchanged | US map unchanged; synthetic Y types y | PASS; con18 restored as the default |
The X230 check used a matching 21.1 companion package. This download is for 1.19.7. Physical BIOS/CSM machines without a KMS driver are still wanted, especially the HP EliteBook 820 G2 case. The keyboard-layout report remains an open question; these checks do not establish its cause.
Download
From dlc.openindiana.org/isos/hipster/test/xorg-autodetect-rev18-20261021/
| File | Purpose |
|---|---|
xorg-autodetect-1.19.7-rev18-20261021.p5p | The package archive |
xorg-autodetect-1.19.7-rev18-20261021.p5p.sha256sum | Its SHA-256 checksum |
README.md | This guide as plain text |
The archive contains exactly two packages for the standard openindiana.org publisher,
so you do not need to add a publisher:
x11/server/xorg@1.19.7,5.11-2026.0.0.18:20261021T173619Zx11/server/xserver-common@1.19.7,5.11-2026.0.0.18:20261021T173621Z
Both are Xorg userland packages. There are no kernel, driver or OS packages.
xserver-common also ships Xorg’s mdb debugging module, which is not part of
this test.
Before you start
- Plan for about 45 minutes and two or three reboots. Back up anything you cannot lose.
- You need a root shell for steps marked as root: for example
sudo -son a default installation. Steps marked as your user run in a terminal inside your desktop session on the machine itself, not over SSH. - Run one block at a time. If a command prints an error, stop there and report what you saw. Do not improvise around it.
- Keep a piece of paper handy for two names: your original BE and the test BE.
- Know how to reach your boot menu. Both GRUB and the illumos loader let you choose a BE at boot, and that menu works even without a desktop.
Step 1: record the system as it is now
In a terminal in your desktop session:
as your userecho "$DISPLAY"
This should print something like :0. If it prints nothing, or a name with a host such
as localhost:10.0, you are not in the local desktop. The display queries below would then
come out empty or describe the wrong screen.
D=~/xorg-test/before
mkdir -p "$D"
cd "$D"
echo "DISPLAY=$DISPLAY" > display.txt
xrandr --current > xrandr.txt 2>&1
setxkbmap -query > setxkbmap.txt 2>&1
svcprop -p keymap/layout system/keymap:default > console-keymap.txt 2>&1
pkg list -v x11/server/xorg x11/server/xserver-common > pkg.txt 2>&1
uname -v > uname.txt
prtconf -d | grep -i display > display-hw.txt 2>&1
ls -l /etc/X11/xorg.conf /etc/X11/xorg.conf.d /dev/dri > config.txt 2>&1
grep -i driver /etc/X11/xorg.conf /etc/X11/xorg.conf.d/*.conf > drivers.txt 2>&1
cp /var/log/Xorg.0.log .
grep -E 'console driver|illumos framebuffer|autoconfigured driver' Xorg.0.log
“Not found” lines in config.txt or drivers.txt are normal and useful.
Check pkg.txt. The version of both packages should start with 1.19.7 and
contain 2026.0.0.16. Stop if either shows 21.1, or
2026.0.0.17 or later.
Then write down, in your own words:
- the resolution you see now, and the resolution you expect;
- the size of each screen, and if there is more than one, which are on and how they are arranged;
- your physical keyboard layout (the language printed on the keys);
- what appears when you press the Y and Z keys in a text field, and whether punctuation, AltGr characters and copy-and-paste behave normally.
On a default installation your home directory is shared by every BE, so ~/xorg-test
stays available after a reboot. If you are not sure that is true for you, copy it to a USB stick
before each reboot.
Step 2: download and verify
as your usermkdir -p /var/tmp/xorg-rev18 && cd /var/tmp/xorg-rev18
curl -fLO https://dlc.openindiana.org/isos/hipster/test/xorg-autodetect-rev18-20261021/xorg-autodetect-1.19.7-rev18-20261021.p5p
curl -fLO https://dlc.openindiana.org/isos/hipster/test/xorg-autodetect-rev18-20261021/xorg-autodetect-1.19.7-rev18-20261021.p5p.sha256sum
F=xorg-autodetect-1.19.7-rev18-20261021.p5p
digest -a sha256 "$F"
cat "$F.sha256sum"
PACKAGE_SHA=$(digest -a sha256 "$F") &&
EXPECTED_SHA=$(awk 'NR == 1 {print $1}' "$F.sha256sum") &&
[ "${#PACKAGE_SHA}" -eq 64 ] &&
[ "$PACKAGE_SHA" = "$EXPECTED_SHA" ] && echo CHECKSUM OK
The two hashes must be identical and the last line must print CHECKSUM OK. If not,
stop.
Step 3: check your boot environments and create the test BE
Open one root shell and keep it open until the reboot in step 6. The commands use shell variables that exist only in that shell.
as rootbeadm list
Read the Active column. Continue only if exactly one BE is marked
NR (running now and the default for the next boot), no other BE carries
N, R or T, and that BE is the one you were happy with. Write its
name on your paper as the original BE. Stop if the markers are split
across BEs or if any T appears.
Type the original BE’s name exactly as beadm list shows it, then choose a name for the
new test BE that does not exist yet (for example xorg-rev18-test):
printf 'Original BE (marked NR): '; read ORIG
printf 'New test BE name: '; read TESTBE
beadm list "$ORIG"
That last command must show one row, marked NR. If it does not, set ORIG
again. Write the test BE name on your paper too.
Create the test BE as a copy of the running original BE, and mount it:
as rootM=/mnt/xorg-rev18-test
mkdir "$M" &&
beadm create "$TESTBE" &&
beadm mount "$TESTBE" "$M" &&
echo "READY: $TESTBE mounted at $M"
If you do not see READY, stop. Do not reuse an existing directory or BE name.
Step 4: dry run in the test BE
Same shell. Everything here acts on the mounted test BE (-R "$M"). Your running
system is not changed.
The Xorg packages are version-locked. Preview unlocking them in the test BE only:
as rootpkg -R "$M" change-facet -nv --deny-new-be --no-backup-be --no-be-activate \
facet.version-lock.x11/server/xorg=false \
facet.version-lock.x11/server/xserver-common=false
The preview should list only the two facet changes and no package changes. If it does, apply it:
as rootpkg -R "$M" change-facet -v --deny-new-be --no-backup-be --no-be-activate \
facet.version-lock.x11/server/xorg=false \
facet.version-lock.x11/server/xserver-common=false
Now preview the install. The dry run installs nothing:
as rootpkg -R "$M" install -nv --deny-new-be --no-backup-be --no-be-activate \
-g /var/tmp/xorg-rev18/xorg-autodetect-1.19.7-rev18-20261021.p5p \
'pkg://openindiana.org/x11/server/xorg@1.19.7,5.11-2026.0.0.18:20261021T173619Z' \
'pkg://openindiana.org/x11/server/xserver-common@1.19.7,5.11-2026.0.0.18:20261021T173621Z'
Read the plan carefully. It must show exactly two changed packages,
x11/server/xorg and x11/server/xserver-common, each going from a
2026.0.0.16 version to a 2026.0.0.18 version. It must not create a boot
environment.
Stop if the plan:
- installs, removes or updates any other package, such as kernel, driver,
system/…or other OS packages; - reports an error or conflict, or says a dependency, constraint or incorporation cannot be satisfied (this is what “OS too old” looks like);
- says there is nothing to do.
In that case, do not try pkg update, --reject, other facets or
publishers, and do not update or downgrade the OS. Save the output for your report, then unmount
the test BE and leave it inactive:
beadm unmount "$TESTBE"
Step 5: install into the test BE
Only if the dry run looked right. Use the same command without -n:
pkg -R "$M" install -v --deny-new-be --no-backup-be --no-be-activate \
-g /var/tmp/xorg-rev18/xorg-autodetect-1.19.7-rev18-20261021.p5p \
'pkg://openindiana.org/x11/server/xorg@1.19.7,5.11-2026.0.0.18:20261021T173619Z' \
'pkg://openindiana.org/x11/server/xserver-common@1.19.7,5.11-2026.0.0.18:20261021T173621Z'
pkg -R "$M" list -v x11/server/xorg x11/server/xserver-common
Both packages must now show a 2026.0.0.18 version.
Leave your Xorg configuration as it is, including 10-vesa.conf if you
use it. The first test boot checks that your current setup still works. Step 8 offers an optional,
separate comparison without it.
Unmount the test BE:
as rootbeadm unmount "$TESTBE"
Step 6: switch to the test BE
Same shell. This makes the test BE the default for the next boot. It is a normal, permanent activation. Nothing will switch you back on its own. Step 9 switches you back.
as rootbeadm activate "$TESTBE"
echo "beadm exit status: $?"
beadm list
Continue only if both of these are true:
beadm activateprinted no error and the exit status is0;beadm listshows the original BE asN(running now) and the test BE asR(default next boot).
If beadm activate printed any error, or the status is not 0,
stop here and do not reboot, even if the markers look right. Report the output. If the
markers are anything other than described, do not reboot either.
Save your work, then reboot through the firmware and the boot menu:
as rootreboot -p
Step 7: record the system in the test BE
Log in as usual. Check where you are:
as rootbeadm list
The test BE should be NR, and your original BE should still be listed. Note the
output for your report.
Then, in a terminal in your desktop session, run the step 1 block again with a new directory. Change only the first line:
as your userD=~/xorg-test/after
This time pkg.txt should show 2026.0.0.18 for both packages; the stop
rule from step 1 does not apply here.
The last grep in that block shows the new console line. On an illumos_fb
console, it is followed by one of:
illumos framebuffer: legacy video BIOS present; retaining vesa
illumos framebuffer: legacy video BIOS unknown; retaining vesa
illumos framebuffer: legacy video BIOS absent; using illumosfb fallback
If a configuration file names a driver, such as 10-vesa.conf, Xorg skips
autodetection and none of these lines appears. That is expected.
Write down the resolution, screen sizes and arrangement, and keyboard behaviour (the Y and Z keys again) in the same words as before.
Step 8 (optional): try without 10-vesa.conf
Only if drivers.txt showed that you use
/etc/X11/xorg.conf.d/10-vesa.conf, you are running the test BE
(N on the test BE), and you can get to a root shell without the desktop: a text console
or SSH from another machine. If you cannot, skip this step.
In the running test BE. This ends your desktop session, so save your work first:
as roottest ! -e /etc/X11/10-vesa.conf.parked &&
mv /etc/X11/xorg.conf.d/10-vesa.conf /etc/X11/10-vesa.conf.parked &&
echo PARKED
Continue only if you see PARKED. Then restart the login screen:
svcadm restart lightdm
Log in and run the step 1 block once more with D=~/xorg-test/no-vesa-conf.
Afterwards, put the file back, whether or not the desktop came up:
as roottest ! -e /etc/X11/xorg.conf.d/10-vesa.conf &&
mv /etc/X11/10-vesa.conf.parked /etc/X11/xorg.conf.d/10-vesa.conf &&
echo RESTORED
as root
svcadm restart lightdm
If no login screen appears after parking, use your text console or SSH to run the two restore commands. This change exists only in the test BE. Your original BE is untouched.
Step 9: switch back to your original BE
Open a new root shell (the variables from step 3 are gone). Look at the list and set
ORIG again from your paper:
beadm list
printf 'Original BE (from your paper): '; read ORIG
beadm list "$ORIG"
The last command must show exactly that BE. Then make it the default again:
as rootbeadm activate "$ORIG"
echo "beadm exit status: $?"
beadm list
Continue only if both are true:
beadm activateprinted no error and the exit status is0;- the original BE is marked
R, and the test BEN(the one running now).
If beadm activate printed any error or the status is not 0, stop.
Do not reboot, even if R looks right. Report the output. While you wait, you are
still in a working test BE, and the boot menu can still start your original BE.
If both are true, reboot:
as rootreboot -p
Afterwards, beadm list as root should show your original BE as NR.
Keep both BEs. Please do not delete the test BE yet. It helps with follow-up questions.
If the test BE does not start properly
For example a black screen, no login screen, or a hang:
- Reboot or power-cycle the machine. It will start the test BE again, because that is now the default.
- In the boot menu, choose your original BE by name. In the illumos loader that is under Boot Environments; in GRUB it is an entry with the BE name. The menu is on the console and needs no desktop.
- Once the original BE is running, open a root shell and run both blocks of
step 9, but not
reboot -p. Here the second check in step 9 differs: because you are already running the original BE, expect it to showNR, and no marker on the test BE. The exit-status rule is unchanged. No further reboot is needed.
The same rule applies here: if beadm activate reports any error or a non-zero
status, stop and report it, even if the markers look right.
Never delete either BE as part of recovery, and do not use temporary activation
(beadm activate -t or -T) at any point in this test.
Reporting
Please comment on oi-userland#27965. If you have the HP EliteBook 820 G2, please also add your results to Redmine #18500.
Include:
- Machine model, graphics hardware (
display-hw.txt) and firmware mode: BIOS, UEFI with CSM, or pure UEFI - The
console driver:andillumos framebuffer:lines before and after, or that there were none - Driver chosen and resolution, before and after (
Xorg.0.log,xrandr.txt) - Screen sizes and output layout in your own words, before and after
- Your physical keyboard layout,
setxkbmap.txt,console-keymap.txt, and what the Y and Z keys typed, before and after drivers.txt, and whether you ran the optional step 8beadm listoutput from steps 3, 6, 7 and 9- The dry-run output from step 4, if it did not look as described
- The
before/andafter/directories (andno-vesa-conf/), attached or linked. The Xorg logs are the most useful part.
“Nothing changed, everything works” is a useful report too, especially from pure UEFI and KMS machines.
Thank you for testing.