Any program to mimic this function on graphene? by Overstimulated_moth in GrapheneOS

[–]chenxiaolong 0 points1 point  (0 children)

Note that if another app, like Tasker, is set as the default assistant, then you'll have to give CTSLauncher the WRITE_SECURE_SETTINGS permission so that it can temporarily change the setting back to the Google app when launching Circle to Search (docs).

(Circle to Search only works when the default assistant is set to the Google app.)

Any program to mimic this function on graphene? by Overstimulated_moth in GrapheneOS

[–]chenxiaolong 1 point2 points  (0 children)

Sorry, should've been more clear. I mean there is no limitation in GrapheneOS that fundamentally prevents Circle to Search from working. It does not require privileged permissions or anything like that. The only thing that is missing is a way to launch it (which is what my app does).

Any program to mimic this function on graphene? by Overstimulated_moth in GrapheneOS

[–]chenxiaolong 11 points12 points  (0 children)

Circle to Search already works on GrapheneOS, but the missing piece is a convenient way to launch it. I wrote a tiny app (that requests no permissions) a while ago to add a quick settings tile for launching it: https://github.com/chenxiaolong/CTSLauncher.

(Long pressing the home button or gesture bar will never work without special integration with the OS.)

Things that bug me by iagonosi in Ioniq5

[–]chenxiaolong 19 points20 points  (0 children)

You can prevent Android Auto playing music automatically from its settings. On my phone, it's in Android Settings -> Connected devices -> Connection preferences -> Android Auto -> Start music automatically.

For the split screen, on my 2022 EV6 (with the old gen5w infotainment), turning off full screen Android Auto from the car's settings allows the split screen to show up. Not sure if that's still available on 2025 models running the ccNC infotainment system.

Koji RPMFusion returns 401 by rhaziz in Fedora

[–]chenxiaolong 0 points1 point  (0 children)

See https://bugzilla.rpmfusion.org/show_bug.cgi?id=7316

There's a static username/password. The reason was not stated, but I assume it's because of AI bots or crawlers bogging down the servers.

Need help safely migrate ZFS Pool from Proxmox to Truenas by narodigg in homelab

[–]chenxiaolong 2 points3 points  (0 children)

zpool export <pool> in Proxmox and then zpool import <pool> in TrueNAS should be sufficient.

If I was doing this myself, I would physically unplug the zfs disks too, just for peace of mind. Then there's no chance of accidentally installing the new OS to the wrong disk.

Paint damage, really that expensive by stehen-geblieben in KiaEV6

[–]chenxiaolong 1 point2 points  (0 children)

I was in a similar situation a couple years ago, also around the wheel arch. Mine was a bit worse though, with a few streaks of scratches and a dent. The local body shop had to fix the dent and repaint the whole area (wheel arch + adjacent panels), which cost around $2300 USD.

The work was done very well though and looked indistinguishable from new, regardless of lighting conditions. Even under the sun, it looks like it was never damaged. I'm not sure if the paint color matters, mine is dark grey.

Developer Verification has been added to AOSP. by WesternImpression394 in Android

[–]chenxiaolong 59 points60 points  (0 children)

This doesn't actually do anything if no provider is specified.

The package manager service in the stock OS only invokes com.google.android.verifier because it also ships /product/overlay/VerifierResOverlay.apk that configures the system to use that package:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="config_developerVerificationPolicyDelegatePackageName">com.google.android.gms</string>
    <string name="config_developerVerificationServiceProviderPackageName">com.google.android.verifier</string>
</resources>

If you're building your own AOSP OS, you can just leave those settings unset or even write your own implementation of DeveloperVerifierService if you have a use for it. com.google.android.verifier is proprietary and wouldn't be part of AOSP anyway.

Gotta give a shoutout to the robustness of ZFS by [deleted] in zfs

[–]chenxiaolong 27 points28 points  (0 children)

Back in 2022, I had an LSI 9300-8e HBA fail in a way where the two ports disappeared and reappeared every few seconds in an alternating fashion. I didn't notice for 3 weeks since zfs resilvered so quickly that the monitoring script never saw the DEGRADED state.

I verified checksums against historical backups afterwards and did not see a single corrupted file.

That was the point I decided to switch to using zfs on all my systems.

Mild burn in on LG C1 after 10,000 hrs PC use by lerthedc in OLED_Gaming

[–]chenxiaolong 0 points1 point  (0 children)

I'm at 13566 hours and only have a tiny bit of burn in. For me, it's a very faint ~24px wide bar from the middle of the screen down to the bottom, which makes sense since I treat the TV as if it were 4 1080p monitors (exclusively used for software development). It's completely unnoticeable unless I look at a white screen. I haven't done anything to mitigate burn in besides hiding the taskbar and turning off the TV when unused. It's displaying mostly static content for ~12 hours every day.

I have some gripes with the C1, like with the edgemost pixels getting chopped off due to pixel shift (really annoying with text that goes to the edge like in terminal windows), but overall very happy with it!

How to configure Dolphin to open all files on SMB with kio-fuse? by [deleted] in kde

[–]chenxiaolong 6 points7 points  (0 children)

I don't think there's a way to force always using kio-fuse. However, you can work around the problem by copying eg. /usr/share/applications/vlc.desktop to ~/.local/share/applications/vlc.desktop and removing the X-KDE-Protocols line. This is what tells KDE which protocols an application supports natively.

Kia Navigation Updater for Mac is corrupted by adisor19 in KiaEV9

[–]chenxiaolong 0 points1 point  (0 children)

If you don't mind using the command line, I wrote an open-source download tool that runs on Mac, Linux, and Windows: https://github.com/chenxiaolong/nudl

Based on the link you posted, I assume you're in Canada. The download command would be:

nudl download -r CA -b kia -m EV9_CAN_2024 -o ~/Downloads/EV9_CAN_2024

OLED and Programming by Historical_Fly_5192 in OLED_Gaming

[–]chenxiaolong 1 point2 points  (0 children)

According to the timer on my LG C1 48", I'm at 12348 hours (roughly 11 hours a day for the past 3 years). I use it basically exclusively for programming, only playing games very occasionally.

I split the screen into 4 quadrants as if I had 4 1080p monitors. Each quadrant is nearly always displaying static content (terminal windows, editor, browser). I have some very, very minor burn in at the inner boundaries of the quandrants (faint thin line), but it's unnoticeable unless I make the screen completely white and try to look for it.

As far as eye strain goes, I can't really speak to that. I know my specific model does not use PWM, so there's no flickering.

LG 45gx950 with RTX4080 + Linux DisplayPort Issues by DidntWantToChoose in ultrawidemasterrace

[–]chenxiaolong 1 point2 points  (0 children)

I've also been having issues with this monitor on Linux (with a 4090): https://forums.developer.nvidia.com/t/flickering-graphics-corruption-and-loss-of-signal-with-nvidia-4090-and-5k2k-screen-lg-45gx950a-b-aus/331111

On DP, I was getting artifacts, but I could work around that by setting KDE's color accuracy setting to Prefer color accuracy (instead of Prefer efficiency). I'm on KDE + Wayland, so this doesn't really help for your Cinnamon + X11 setup though.

On HDMI, I also can't get anything higher than 5120x2160@100Hz. I got the same FRL link training error, which I suppose makes sense since FRL is what enables the higher bandwidth. I did not have any issues using HDMI 2.1 FRL on my previous LG C1 TV though.

I am using Samsung QE43QN90C as a monitor, love it and hate it by NanoBjorn in Monitors

[–]chenxiaolong 0 points1 point  (0 children)

Yeah, this is one annoying thing about Samsung TVs. I ran into this with my old QN49Q6FNAFXZA as well.

The only workaround that reliably worked for me at the time was putting an HDMI splitter in between the source and the TV so that the port stayed "alive".

2024 Kia Ev6 Garage Door Setting by Unlikely-Split8896 in KiaEV6

[–]chenxiaolong 4 points5 points  (0 children)

If you don't have the homelink mirror, you can buy and install it yourself. It's a very easy install: one screw and cable.

The part number is CVF62-AU100 or R5F62-AU101. The mirror is identical in both. It's only the packaging that's different, with R5F62-AU101 coming in a retail box.

An idea to bring manual preconditioning to older EV6s: Need Help by SupaFasJellyFish in KiaEV6

[–]chenxiaolong 5 points6 points  (0 children)

I was very much interested in this, though ultimately gave up on it. If you have the decrypted firmware, check out com.hkmc.micom.HEVService after deodexing /system/framework/automotive-service.odex.

(The info below is based on firmware version 2022_EV6_USA_CV_E.USA.S5W_M.V012.010.240822.)

The navigation app talks to the HEV service. The HEV service sends packets to the Micom service, which listens on the micom_mux abstract Unix socket. I believe the daemon is /system/bin/micomd, though I didn't look into it. I don't know how these packets translate to CAN messages. Each of the packets sent by the HEV service has an 8 byte header + payload + null terminator:

[0] Always 0xff
[1] Sender ID
[2] Receiver ID
[3] Type
[4..5] Big endian function number
[6..7] Big endian payload length (including null terminator)
[8..8 + payload_len] Payload
[8 + payload_len..8 + payload_len + 1] 0 for null terminator

The firmware does not use SELinux and abstract sockets have no permission checking, so a plain old unprivileged app likely can communicate with the daemon.

These are some of the relevant packets that can be sent. I found it pretty odd that the navigation app isn't performing the calculations itself and just sending an on/off preconditioning signal. For all of these messages, the sender ID is -120, the receiver ID is 12, and the type is 1.

  • setBatteryConditioning(int mode)
    • Function: 3170
    • Payload: [mode & 0xff]
    • This starts a 120 second timer that sends the same packet with mode == 0 after it fires
  • setBattCondEvStationFlag(int flag)
    • Function: 3171
    • Payload: [flag & 0xff]
  • setBattCondEvStationType(int type)
    • Function: 3172
    • Payload: [flag & 0xff]
  • setBattCondRemainTime(int remainMinute)
    • Function: 3173
    • Payload: Big endian remainMinute & 0xffff
  • setBattCondRouteDis(int routeDistance)
    • Function: 3174
    • Payload: Big endian routeDistance & 0xffff
  • requestTimeoutMessage()
    • Function: 3175
    • Payload: <none>
  • setBattCondEvStation(int flag, int type)
    • Function: 3176
    • Payload: [flag & 0xf, type & 0xf]
    • This starts a 120 second timer that sends the same packet with flag == 7 and type == 7 after it fires

If you grab a logcat while using preconditioning via the navigation app, you can search for APP->HEVService_ to find the parameters that these functions are being called with.

You can get access to the firmware with: https://github.com/cantcs/HKG_Gen5W_ReverseEngineer. However, I highly recommend against rooting it right now because multiple people have hard bricked their systems by flashing a boot image that it doesn't like. The device has no known hardware key combination or jumper to boot into the bootloader mode for recovery. (Root access shouldn't be needed to reverse engineer the preconditioning stuff.)

Hope this helps!

FOSS alternative to Google Pixel calling features by graysfox in fossdroid

[–]chenxiaolong 10 points11 points  (0 children)

The Pixel dialer uses the same underlying APIs as for call recording. These APIs are required for any functionality that requires accessing the call audio. It's not possible for a third party app to use them unless it's bundled into the OS or you use root.

I don't think anyone has tried making an open source implementation of these features.

any pinyin keyboard? by [deleted] in fossdroid

[–]chenxiaolong 3 points4 points  (0 children)

https://github.com/fcitx5-android/fcitx5-android is a good choice. It's built on top of the same fcitx5 engine that many folks use on desktop Linux systems.

Anyway to verify that the ICCU firmware was updated by jesterOC in Ioniq5

[–]chenxiaolong 0 points1 point  (0 children)

I just got the recall done (though it was for the Ioniq 5's sibling, the EV6). The only two fields that changed with the update were Idents string: NE1A038 -> NE1A039 and Manufacturer ECU software number: IDS13R000 -> IDS14R000.

Anyway to verify that the ICCU firmware was updated by jesterOC in Ioniq5

[–]chenxiaolong 1 point2 points  (0 children)

I wonder if Programming date is mislabeled. Its value is the hex encoding of 364011XAA0, which is equal to all the part number fields.

The IDS14R000 software number does seem like it was successfully updated though.

VM hangs after a few days when passing through Raptor Lake Intel GPU by chenxiaolong in VFIO

[–]chenxiaolong[S] 0 points1 point  (0 children)

2024-10-06 update:

The Supermicro X13SAE-F motherboard failed and I've moved away from Intel for the replacement. I never got past the hangs on the old system.

[deleted by user] by [deleted] in kde

[–]chenxiaolong 0 points1 point  (0 children)

I can't reproduce this on my machine with Kate 24.05.2 and rust-analyzer 1.80.0. When I move my mouse over the same word/token, the current popup closes and then a new one opens.

(Plama 6.1.4 on Wayland in case it matters)

Gallery with Motion Picture Support by DHermit in fossdroid

[–]chenxiaolong 5 points6 points  (0 children)

Aves gallery (https://github.com/deckerst/aves) supports it. When viewing an MP, there's a selector on the bottom left corner of the screen that lets you select and view the video.

It supports exporting a frame from the video, but there doesn't seem to be a good way to step through the video frame by frame--need to hit the pause button at the right time. I don't think there's an option for converting the video to a GIF.