Lo so ma nelle ma esperienza chuwi con corebook (github.com/rboldini), ho trovato che non tutti i corebook vengono con un chipset intel, alcuni arrivano con un chipset realtek.. Penso dipenda dal mercato di destinazione.
Nessuna soluzione per chi come ha un chipset wifi realtek pcie (model: rtl8821ce)
Tra le altre cose ancora avete problemi con SMCBatteryManager?
Io sono riuscito a fare andare SMC ma ancora resta la notifica di sostituzione della batteria, anche il cycle count è abilitato e funzionante.
La tabella ACPI della batteria da quello che posso vedere dai DSDT è la stessa tra 'Pro' e 'X Gen1'.
Ma per questo creerò un post, mi serve una mano con le varie patch ACPI 😢
Guardando la tua repo, ho notato che:
Scope (_SB.PCI0.I2C2.BMA0)
{
Method (IANG, 1, NotSerialized)
{
B1B4 (^^^LPCB.H_EC.OID0, ^^^LPCB.H_EC.OID1, ^^^LPCB.H_EC.OID2, ^^^LPCB.H_EC.OID3) = Arg0
}
}
questo metodo credo sia sbagliato, non credo tu possa storare valori con B1B4, anzi bisognerebbe prendere Arg0 e dividerlo in valori a 8 byte tramite shift e metterlo dentro OIDx in base allo shift.
Pare non crei troppi problemi questo. Risulta comunque inutile grazie a quanto scritto sotto.
Altra cosa potete tranquillamente rimuovere questa patch colossale, aggiungere ECEnabler e SMCBatteryManager e rimpiazzare la vostra patch con questa:
DefinitionBlock ("", "SSDT", 2, "OCLT", "BAT0", 0x00000000)
{
External (_SB_.PCI0.LPCB.H_EC, DeviceObj)
External (_SB_.PCI0.LPCB.H_EC.B1CR, FieldUnitObj)
External (_SB_.PCI0.LPCB.H_EC.B1DC, FieldUnitObj)
External (_SB_.PCI0.LPCB.H_EC.B1FC, FieldUnitObj)
External (_SB_.PCI0.LPCB.H_EC.B1FV, FieldUnitObj)
External (_SB_.PCI0.LPCB.H_EC.B1ST, FieldUnitObj)
External (_SB_.PCI0.LPCB.H_EC.BAT0, DeviceObj)
External (_SB_.PCI0.LPCB.H_EC.BPCN, FieldUnitObj)
External (B1FC, IntObj)
External (B1FV, IntObj)
Scope (_SB.PCI0.LPCB.H_EC.BAT0)
{
Method (_BIF, 0, NotSerialized) // _BIF: Battery Information
{
Name (BPKG, Package (0x0D)
{
Zero,
Ones,
Ones,
One,
Ones,
Zero,
Zero,
0x64,
Zero,
"SR Real Battery",
"123456789",
"Real",
"Intel SR 1"
})
Local0 = B1FV /* External reference */
Local1 = ((B1DC * Local0) / 0x03E8)
Local2 = ((B1FC * Local0) / 0x03E8)
BPKG [One] = 0xB478 /* Design Capacity*/
BPKG [0x02] = Local2
BPKG [0x04] = 0x2D1E /* Design Voltage*/
If (B1FC)
{
BPKG [0x05] = (Local2 / 0x0A)
BPKG [0x06] = (Local2 / 0x19)
BPKG [0x07] = (Local1 / 0x64)
}
Return (BPKG) /* \_SB_.PCI0.LPCB.H_EC.BAT0._BIF.BPKG */
}
}
}
dove trovate i commenti design capacity e voltage dovete hard codare i valori reali del chuwi ovvero quelli che trovate nella pagina dello store.
Ad esempio:
Per il corebook X gen1 troviamo -> 46200mWh e 11,5V ovvero 4000mA e 11550 mV
Avendo nel primo field del _BIF Zero seguendo le specifiche ACPI 6.4 sappiamo che la chiave di lettura è in mW/mWh quindi in BPKG[One] = hex(46200) e BPKG[0x04] = hex(11550)
Un'investigazione piú approfondita mi fa notare che solo ACPIBatteryManager di rehabman ha bisogno dell'inject del nominal voltage in BPKG[0x04] e non del design capacity, SMCBatteryManager riesce a lavorare anche con i valore di default nel deisgn voltage, ma ha bisogno per forza del design capacity settato a mano.
More: Questi due valori da documentazione non devono cambiare in runtime, per questo ci possiamo permettere di hard-codarli male, e per questo in qualsiasi caso li specifico entrambi anche se ne servirebbe solo uno.
MoreMore: Secondo la documentazione di VirtualSMC per correttezza il metodo _BIF dovrebbe essere convertito in un metodo _BIX per maggiori info guardate la repo di VirtualSMC e la documentazione ACPI 6.4.
In futuro tornerò con il metodo convertito.
Per qualsiasi chiarimento sono a vostra disposizione.
Spero vi torni utile se si ricordatevi dei credit.