Apple SMC library & tool

Related tags

Miscellaneous SMCKit
Overview

SMCKit

An Apple System Management Controller (SMC) library & command line tool in Swift for Intel based Macs. The library works by talking to the AppleSMC.kext (kernel extension), the private driver for the SMC. Read temperature sensors, get and set fan speed (RPM), and more.

  • For an example usage of this library, see dshb, a macOS system monitor in Swift
  • For other system related statistics in Swift for macOS, see SystemKit

System Management Controller

"The System Management Controller (SMC) is an internal subsystem introduced by Apple Inc. with the introduction of their new Intel processor based machines in 2006. It takes over the functions of the SMU. The SMC manages thermal and power conditions to optimize the power and airflow while keeping audible noise to a minimum. Power consumption and temperature are monitored by the operating system, which communicates the necessary adjustments back to the SMC. The SMC makes the changes, slowing down or speeding up fans as necessary." -via Wikipedia

For more see:

Requirements

  • Xcode 9.0 (Swift 4.0)
  • macOS 10.12 Sierra and above for development (due to Xcode)
  • OS X 10.9 Mavericks and above for use (due to Swift)

Clone

Make sure to use the recursive option on clone to initialize all submodules.

git clone --recursive https://github.com/beltex/SMCKit

Incase you have already cloned the repository, run the following inside the project directory.

git submodule update --init

SMCKitTool

A macOS command line tool for interfacing with the SMC using SMCKit. The CommandLine library is used for the CLI and ronn for generating the manual page.

Install

This will build SMCKitTool (smckit(1)) from source and place the binary and manual page in your path.

make install
Example
$ smckit
-- Temperature --
AMBIENT_AIR_0           34.0°C
CPU_0_DIE               48.0°C
CPU_0_PROXIMITY         39.0°C
ENCLOSURE_BASE_0        29.0°C
ENCLOSURE_BASE_1        29.0°C
ENCLOSURE_BASE_2        28.0°C
HEATSINK_1              34.0°C
MEM_SLOTS_PROXIMITY     36.0°C
PALM_REST               27.0°C
-- Fan --
[id 0] Right Side
    Min:      1299 RPM
    Max:      6199 RPM
    Current:  1292 RPM
-- Power --
AC Present:       true
Battery Powered:  false
Charging:         false
Battery Ok:       true
Battery Count:    1
-- Misc --
Disc in ODD:      false

Library Usage Notes

  • The use of this library will almost certainly not be allowed in the Mac App Store as it is essentially using a private API
  • If you are creating a macOS command line tool, you cannot use SMCKit as a library as Swift does not currently support static libraries. In such a case, the SMC.swift file must simply be included in your project as another source file. See SwiftInFlux/Runtime Dynamic Libraries for more information and both SMCKitTool & dshb as examples of such a case.

References

There are many projects that interface with the SMC for one purpose or another. Credit is most certainly due to them for the reference. Such projects as:

Handy I/O Kit references:

License

This project is under the MIT License.

Fun

While the SMC driver is closed source, the call strucutre and definition of certain structs needed to interact with it (see SMCParamStruct) happened to appear in the open source Apple PowerManagement project at around version 211, and soon after disappeared. They can be seen in the PrivateLib.c file under pmconfigd. In the very same source file, the following snippet can be found:

// And simply AppleSMC with kCFBooleanTrue to let them know time is changed.
// We don't pass any information down.
IORegistryEntrySetCFProperty( _smc,
                    CFSTR("TheTimesAreAChangin"),
                    kCFBooleanTrue);

Almost certainly a reference to Bob Dylan's The Times They Are a-Changin' :)

Comments
  • Generate API doc

    Generate API doc

    Generate an API doc (like javadoc).

    Swift support for this is coming. See:

    • appledoc
      • https://github.com/tomaz/appledoc/issues/460 - will support in version 3.0
    • jazzy
      • https://github.com/realm/jazzy/issues/34 - currently broken as of Xcode 6 - Beta 7
    enhancement 
    opened by beltex 8
  • i'm getting

    i'm getting "error 65"

    when I do "make install", it'll go through everything and then say it failed due to;

    > ** BUILD FAILED **
    > 
    > 
    > The following build commands failed:
    > 	CompileSwift normal x86_64
    > 	CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
    > (2 failures)
    > make: *** [build] Error 65
    
    opened by kolya009 5
  • Getting fan name on MacbookPro15,1 is not working

    Getting fan name on MacbookPro15,1 is not working

    Some of the keys to get information about the fans are not working on a 15" MacbookPro from 2018. After testing the keys, I got the result that the following keys are not working:

    • F0ID
    • F0Mt
    • F1ID
    • F1Mt

    Trying to read data from these keys will throw an exception. Any idea how to fix this?

    opened by D0miH 4
  • Get power information

    Get power information

    in iStat Menus 6, it is possible to view the CPU, DC-In, and other powers (in watts, volts, and amps).

    Is there support for these features in SMCKIt? I had a look through the code and it doesn't appear to have them.

    Thanks!

    opened by larryqiann 4
  • Rewrite

    Rewrite

    Sorry about the monolithic first commit of the PR. Started just tinkering with things on the side, so commit history would have been quite sporadic. This was supposed to be a refactoring, but turned into a rewrite. It was a good time to do this with Swift 2.0. Tagged version 0.0.15 to be a marker release before these breaking changes are merged in.

    Key Changes

    • Extensions for types to do encoding and decoding which should be much cleaner
    • Using the new error handling in Swift
    • All static methods. Shouldn't be a need to have more than one connection to the SMC in a process
    • All public now. Easily extendable and flexible, so the client can use it how they like. Have access to lower level functions to make custom calls (callDriver), or just stick to higher level functions (temperature(), fanSpeed(), etc.)
    • Easy to add new temperature sensor with the way things are structured now (not an enum any more)

    Error Handling

    Wanted to highlight error handling because a lot of time was spent thinking about it. Keep in mind that since we are dealing directly with hardware here, any call to the SMC could fail for any number of reasons.

    Certainly, the existing approach of a tuple return with two return codes (I/O Kit and SMC), was subpar for a number of reasons. First off, should have abstracted the two error codes into one at the very least. Second, was not using optionals for the main value, which mean't having to document return values on error, which leads to all sorts of issues. Opted to go with the new error handling in Swift 2.0. We'll see how it goes. I know throwing and catching exceptions all over the place can be a pain, but I think ultimately it led to the most clarity and simplicity. The key question was, do we only care about just success/failure, and thus could simply use an optional return type, or does the client indeed care about the error in question? Thats what #8 tried to bring up (that was before error handling was added to Swift). Ultimately, I thought the answer is yes, because in many cases, the client can act on the error. There is a range of possible errors that could occur, from key not found (which would be common), to things like lack of privilege (needing root to write) for example. Nonetheless, the possibility of a try? in the future (see here) adds extra flexibility when the client wants to just check for success/failure (folks have come up with their own implementations of this in the meantime). Finally, I know Result has been popular, and thats certainly something that could be looked at in the future.

    opened by beltex 4
  • Programmatically elevate privileges for writes

    Programmatically elevate privileges for writes

    Writing to the SMC requires root (setFanRPM() for example). Currently, this is done by simply running the process as root (sudo). Instead we want to do this programmatically, prompting the user for privileges (credentials).

    See "Elevating Privileges Safely" Apple doc.

    enhancement 
    opened by beltex 4
  • Unit tests via XCTest

    Unit tests via XCTest

    Test:

    • Data type conversions
    • Struct padding & alignment for SMCParamStruct
    • Expected kIOReturnSuccess cases
    • Expected failures (bad SMC keys, bad RPM, etc)
    • etc
    enhancement 
    opened by beltex 4
  • How to use in a swift project

    How to use in a swift project

    Hey,

    I imported SMC.swift in my project. However I can't get it to print the current Temperature values. The following prints an empty array and 0.0 for every Temperature sensor. Am I missing something?

    let smc = SMC()
    println(smc.getAllValidTemperatureKeys())
    for tempKey in enumerate(SMC.Temperature.allValues) {
        println(smc.getTemperature(tempKey.element.0, unit: SMC.TemperatureUnit.Celsius).0)
    }
    
    opened by dducro 3
  • Use array instead of enumerating values in SMCParamStruct

    Use array instead of enumerating values in SMCParamStruct

    • The original SMCParamStruct defines an array of 32 UInt8 values (for the actual data returned from the SMC)
    • When we do this, can't read the array once passed back from C (I/O Kit call), thus we enumerate 32 UInt8 values instead
      • The array works fine on the C side, checked via bridging header to a small C wrapper function
    • We know the data is there (as enumerating values works)
    • There's some trickery to be had here with UnsafePointers, but have yet to get it to work
    enhancement 
    opened by beltex 3
  • Removal of tuple return - I/O Kit & SMC return codes

    Removal of tuple return - I/O Kit & SMC return codes

    ... -> (..., IOReturn: kern_return_t, kSMC: UInt8)
    

    Do we really need to return the error codes? On a debug build, they'll be printed out. In release, could you/would you act on those error codes? Probably not. The value returned should indicate if something has gone wrong already, like 0 RPM for a fan speed call.

    question 
    opened by beltex 3
  • Xcode 8.1 - Can't return anything with SMCKit

    Xcode 8.1 - Can't return anything with SMCKit

    Running this code (on MacBookPro13,2 with 10.12.1):

    import Cocoa
    import SMCKit
    
    do {
        let fans = try SMCKit.fanCount()
        print(fans)
    } catch {
        print("Error")
    }
    

    Prints "Error". It happens with fan speed, fan names, etc. What am I doing wrong?

    opened by PKBeam 2
  • SMCKeys on Ventura are completely (almost) different from that on Monterey.

    SMCKeys on Ventura are completely (almost) different from that on Monterey.

    Currently getting the battery info will produce error: keyNotFound(code: "BNum").

    SMCKeys on Ventura 13.0:

    #KEY
    AC-B
    AC-C
    AC-E
    AC-F
    AC-I
    AC-J
    AC-M
    AC-N
    AC-P
    AC-Q
    AC-R
    AC-S
    AC-T
    AC-U
    AC-W
    AC-X
    AC-h
    AC-i
    AC-l
    AC-m
    AC-n
    AC-p
    AC-w
    AC-x
    ACDI
    ACFP
    ACKG
    ACKL
    ACKR
    ACKS
    ACLC
    ACLM
    ACMg
    ACPK
    ACPO
    ACPW
    ACSt
    ACVS
    AOPb
    B0AC
    B0AP
    B0AT
    B0AV
    B0BL
    B0CA
    B0CC
    B0CF
    B0CH
    B0CI
    B0CJ
    B0CM
    B0CS
    B0CT
    B0CU
    B0DC
    B0ET
    B0FC
    B0FD
    B0FG
    B0FH
    B0FI
    B0FU
    B0FV
    B0HM
    B0I2
    B0IF
    B0IM
    B0IS
    B0IV
    B0MS
    B0NC
    B0OC
    B0OS
    B0OV
    B0PS
    B0QD
    B0QS
    B0R1
    B0R2
    B0R3
    B0RC
    B0RI
    B0RM
    B0RS
    B0RV
    B0S1
    B0SC
    B0SR
    B0SS
    B0TC
    B0TE
    B0TF
    B0TI
    B0Ti
    B0UC
    B1AT
    B1SS
    B1TI
    B1WI
    B2AT
    BAAC
    BACC
    BAPS
    BAST
    BBAD
    BC1A
    BC1I
    BC1V
    BC2A
    BC2I
    BC2V
    BC3I
    BC3V
    BC4I
    BCBL
    BCCA
    BCDC
    BCDD
    BCDW
    BCF0
    BCFB
    BCFD
    BCFO
    BCFP
    BCFR
    BCFS
    BCFT
    BCFV
    BCHT
    BCMV
    BCMW
    BCSS
    BCST
    BDD1
    BDD2
    BDD3
    BDLB
    BDLC
    BDLI
    BFC1
    BFC2
    BFCT
    BFLO
    BFLV
    BFS0
    BFWC
    BHT0
    BHT1
    BHT2
    BHT3
    BHT4
    BHT5
    BHT6
    BHT7
    BHT8
    BHT9
    BHTA
    BHTB
    BHTL
    BIMX
    BIPD
    BISS
    BITV
    BL0A
    BL0B
    BL0C
    BL0D
    BLCC
    BLCM
    BLCR
    BLCX
    BLH0
    BLH1
    BLH2
    BLH3
    BLIC
    BLID
    BLPM
    BLPX
    BLTA
    BLTM
    BLTO
    BLTP
    BLTS
    BLTX
    BMCD
    BMDA
    BMDB
    BMDN
    BMDT
    BMSC
    BMSN
    BMSQ
    BMW1
    BMW2
    BNCB
    BNSC
    BQCC
    BQD1
    BQD2
    BQD3
    BQX1
    BQX2
    BQX3
    BR00
    BR01
    BR02
    BR03
    BR04
    BR05
    BR06
    BR07
    BR08
    BR09
    BR0C
    BR0W
    BR10
    BR11
    BR12
    BR13
    BR14
    BRC0
    BRC1
    BROS
    BRSC
    BSFC
    BT0C
    BT0L
    BT0V
    BTFU
    BTHC
    BTHW
    BTIL
    BTRA
    BTRO
    BTRP
    BTRS
    BTRT
    BTSI
    BTSV
    BTTA
    BTTC
    BTTI
    BTTS
    BTVA
    BTVC
    BTVI
    BTVL
    BUIC
    BUPT
    BVCA
    BVHA
    BVTC
    BVVA
    BVVI
    BVVL
    BVVM
    BVVN
    BVVO
    BVVP
    BVVQ
    BVVR
    BZTC
    BZTG
    BfDC
    BfRM
    Bvt0
    Bvt1
    Bvt2
    Bvt3
    Bvt4
    Bvt5
    Bvt6
    Bvt7
    Bvt8
    Bvt9
    Bvta
    Bvtb
    Bvtc
    Bvtd
    Bvte
    Bvtf
    Bvtg
    Bvth
    Bvti
    Bvtj
    Bvtk
    Bvtl
    Bvtm
    Bvtn
    Bvto
    CBCL
    CC0E
    CC0S
    CC0T
    CC0V
    CC0X
    CH0B
    CH0C
    CH0D
    CH0E
    CH0H
    CH0I
    CH0J
    CH0K
    CH0R
    CH0V
    CHA1
    CHA2
    CHAI
    CHAS
    CHBI
    CHBV
    CHCC
    CHCE
    CHCF
    CHCR
    CHDB
    CHFC
    CHFS
    CHHC
    CHHF
    CHHV
    CHHW
    CHI1
    CHI2
    CHIB
    CHIE
    CHIF
    CHIL
    CHIM
    CHIO
    CHIS
    CHKD
    CHKG
    CHKH
    CHKK
    CHKL
    CHKM
    CHKO
    CHKP
    CHKQ
    CHKR
    CHKS
    CHKT
    CHKU
    CHKV
    CHKW
    CHNC
    CHNI
    CHOC
    CHP1
    CHP2
    CHPP
    CHPS
    CHSC
    CHSE
    CHSL
    CHST
    CHTC
    CHTE
    CHTL
    CHTM
    CHTU
    CHWA
    CIBL
    CLBT
    CLKM
    CLKU
    CLSD
    CLSP
    CLWK
    CMCR
    CMDR
    CMR0
    CMR1
    CS0D
    CSBI
    CSBV
    CSCI
    CSCV
    CSFI
    CSFV
    CSIC
    CSIE
    CSIL
    CSIM
    CSIP
    CSIX
    CSRD
    CSST
    CSTI
    CSTV
    CSVC
    CSVL
    CSVM
    CSVX
    D1Ac
    D1Au
    D1BD
    D1BI
    D1CA
    D1CD
    D1CF
    D1CR
    D1Ca
    D1Cb
    D1Cc
    D1Cf
    D1Ci
    D1Cm
    D1Cn
    D1Cr
    D1Cs
    D1Cv
    D1Cw
    D1DA
    D1DE
    D1DI
    D1DP
    D1DR
    D1Dp
    D1EC
    D1EF
    D1Ep
    D1FC
    D1FS
    D1FV
    D1IC
    D1IR
    D1JA
    D1JB
    D1JD
    D1JI
    D1JR
    D1JS
    D1JV
    D1LR
    D1MI
    D1MP
    D1MV
    D1PI
    D1PR
    D1PS
    D1PT
    D1Pd
    D1Rc
    D1ST
    D1St
    D1VC
    D1VD
    D1VM
    D1VR
    D1VX
    D1Vb
    D1Vd
    D1Vm
    D1if
    D1ih
    D1ii
    D1im
    D1in
    D1is
    D2Ac
    D2Au
    D2BD
    D2BI
    D2CA
    D2CD
    D2CF
    D2CR
    D2Ca
    D2Cb
    D2Cc
    D2Cf
    D2Ci
    D2Cm
    D2Cn
    D2Cr
    D2Cs
    D2Cv
    D2Cw
    D2DA
    D2DE
    D2DI
    D2DP
    D2DR
    D2Dp
    D2EC
    D2EF
    D2Ep
    D2FC
    D2FS
    D2FV
    D2IC
    D2IR
    D2JA
    D2JB
    D2JD
    D2JI
    D2JR
    D2JS
    D2JV
    D2LR
    D2MI
    D2MP
    D2MV
    D2PI
    D2PR
    D2PS
    D2PT
    D2Pd
    D2Rc
    D2ST
    D2St
    D2VC
    D2VD
    D2VM
    D2VR
    D2VX
    D2Vb
    D2Vd
    D2Vm
    D2if
    D2ih
    D2ii
    D2im
    D2in
    D2is
    D3Ac
    D3Au
    D3BD
    D3BI
    D3CA
    D3CD
    D3CF
    D3CR
    D3Ca
    D3Cb
    D3Cc
    D3Cf
    D3Ci
    D3Cm
    D3Cn
    D3Cr
    D3Cs
    D3Cv
    D3Cw
    D3DA
    D3DE
    D3DI
    D3DP
    D3DR
    D3Dp
    D3EC
    D3EF
    D3Ep
    D3FC
    D3FS
    D3FV
    D3IC
    D3IR
    D3JA
    D3JB
    D3JD
    D3JI
    D3JR
    D3JS
    D3JV
    D3LR
    D3MI
    D3MP
    D3MV
    D3PI
    D3PR
    D3PS
    D3PT
    D3Pd
    D3Rc
    D3ST
    D3St
    D3VC
    D3VD
    D3VM
    D3VR
    D3VX
    D3Vb
    D3Vd
    D3Vm
    D3if
    D3ih
    D3ii
    D3im
    D3in
    D3is
    DBCF
    DBTE
    DCAL
    EVPF
    IBLR
    IBlR
    ID0R
    IKBC
    IMVC
    IO3R
    IO5R
    IP0b
    IP1b
    IP2b
    IP2l
    IP3b
    IP4b
    IP7b
    IP7l
    IP8l
    IP9b
    IP9l
    IPBR
    IPbb
    IPdb
    IPkl
    IR4l
    IR5b
    IR6b
    IR8b
    IRab
    IRcb
    IRcl
    IReb
    IT3C
    IT5C
    ITPR
    IW3C
    Ib0f
    Ib8f
    KDD0
    KDD1
    KDTP
    KINC
    KINV
    KINX
    LDKN
    LGDA
    LGDB
    LGDC
    LGDS
    LGPE
    MBSE
    MBSW
    MBSe
    MBSw
    MEKV
    MEPS
    MESS
    MEWE
    MFIC
    MFIX
    MPPR
    MSAL
    MSAM
    MSFL
    MSFN
    MSKT
    MSLD
    MSLm
    MSLn
    MSMR
    MSMV
    MSOC
    MSOP
    MSSC
    MST3
    MST6
    MSTC
    MSTD
    MSX0
    MSX2
    MSX9
    MSXA
    MSXC
    MSXD
    MSXH
    MSXK
    MSXL
    MSXN
    MSXP
    MSXS
    MSXT
    MSXU
    MSXZ
    MSXb
    MSXc
    MSXd
    MSXh
    MSXk
    MSXl
    MSXm
    MSXn
    MSXs
    MSXt
    MSxb
    MSxd
    MSxs
    MpPC
    MpPD
    MpPI
    MpPM
    MpPN
    MpPO
    MpPP
    MpPS
    MpPU
    MpPV
    N0Tr
    N0Tw
    NESN
    NTAP
    Ns0T
    NsNL
    PBAT
    PBLR
    PBlR
    PDTR
    PHPB
    PHPC
    PHPM
    PHPS
    PKBC
    PMVC
    PO3R
    PO5R
    PP0b
    PP1b
    PP2b
    PP2l
    PP3b
    PP4b
    PP7b
    PP7l
    PP8l
    PP9b
    PP9l
    PPBR
    PPbb
    PPdb
    PPkl
    PR4l
    PR5b
    PR6b
    PR8b
    PRab
    PRcb
    PRcl
    PReb
    PSTR
    PT3C
    PT5C
    PTPR
    PW3C
    PZC0
    PZC1
    PZCB
    PZCU
    Pb0f
    RBID
    RBRV
    RCID
    RCRV
    RECI
    RESV
    RGEN
    RPF0
    RPlt
    SBA1
    SBA2
    SBA3
    SBAA
    SBAC
    SBAL
    SBAP
    SBAR
    SBAS
    SBAV
    SBAm
    SBAn
    SDMX
    SEB0
    SEB1
    SEB2
    SEB3
    SEB4
    SEB5
    SEC0
    SEC1
    SEF0
    SEF1
    SES0
    SES1
    SES2
    SES3
    SES4
    SES5
    SEb0
    SEb1
    SEb2
    SEb3
    SEb4
    SEb5
    SEc0
    SEc1
    SEf0
    SEf1
    SEs0
    SEs1
    SEs2
    SEs3
    SEs4
    SEs5
    SFBN
    SFBS
    SFF0
    SFF1
    SFF2
    SFF3
    SFF4
    SFI0
    SMB0
    SMB1
    SMB2
    SMB3
    SMB4
    SMBC
    SMBD
    SMBG
    SMBR
    SMBS
    SMBU
    SMBW
    T5SP
    TAOL
    TB0T
    TB1T
    TB2T
    TCHP
    TCMb
    TCMz
    TDBP
    TDeL
    TG0B
    TG0C
    TG0H
    TG0V
    TG1B
    TG2B
    TH0T
    TH0x
    TIOP
    TMVR
    TPD0
    TPD1
    TPD2
    TPD3
    TPD4
    TPD5
    TPD6
    TPD7
    TPDX
    TPMP
    TPSP
    TR0Z
    TR1d
    TR2d
    TR3d
    TR4d
    TR5d
    TRD0
    TRD1
    TRD2
    TRD3
    TRD4
    TRD5
    TRD6
    TRD7
    TRDX
    TSCD
    TVA0
    TVD0
    TVM0
    TVM1
    TVM2
    TVM3
    TVS0
    TVS1
    TVSx
    TW0P
    Ta08
    Ta09
    Ta0C
    Ta0D
    Te04
    Te05
    Te06
    Tg0e
    Tg0f
    Tg0m
    Tg0n
    Tg0q
    Tg0r
    Th04
    Th05
    Th06
    Th08
    Th09
    Th0A
    Th0C
    Th0D
    Th0E
    Th0G
    Th0H
    Th0I
    Th0K
    Th0L
    Th0M
    Tm0B
    Tp00
    Tp01
    Tp02
    Tp04
    Tp05
    Tp06
    Tp08
    Tp09
    Tp0A
    Tp0C
    Tp0D
    Tp0E
    Tp0a
    Tp0b
    Tp0c
    Tp0e
    Tp0f
    Tp0g
    Tp0i
    Tp0j
    Tp0k
    Tp0m
    Tp0n
    Tp0o
    Tp0q
    Tp0r
    Tp0s
    Ts0K
    Ts0L
    Ts0M
    Ts0O
    Ts0P
    Ts0Q
    Ts0S
    Ts0T
    Ts0U
    Ts0W
    Ts0X
    Ts0Y
    Ts0a
    Ts0b
    Ts0c
    Ts1P
    TsOP
    Tz11
    Tz12
    Tz13
    Tz14
    Tz15
    Tz16
    Tz17
    Tz18
    Tz1j
    U1B0
    U1D0
    U1R0
    U1S0
    U2B0
    U2D0
    U2R0
    U2S0
    U3B0
    U3D0
    U3R0
    U3S0
    UB0C
    UB0T
    UBAC
    UBAT
    UBAV
    UBCR
    UBD0
    UBDD
    UBFC
    UBHR
    UBID
    UBIS
    UBNC
    UBPC
    UBPF
    UBPI
    UBPN
    UBPR
    UBPV
    UBRA
    UBRM
    UBRS
    UBSS
    UBUI
    UCFG
    UPOC
    UPOF
    UPOR
    UPOS
    VBUS
    VD0R
    VP0R
    VP0b
    VP1b
    VP2b
    VP2l
    VP3b
    VP4b
    VP7b
    VP7l
    VP8l
    VP9b
    VP9l
    VPbb
    VPdb
    VPkl
    VR4l
    VR5b
    VR6b
    VR8b
    VRab
    VRcb
    VRcl
    VReb
    Vb0f
    Vb1f
    WKTP
    aBID
    aDC!
    aDC#
    aDC?
    aDCR
    aP00
    aP01
    aP02
    aP58
    aP59
    aP5a
    aP5b
    aP5c
    aP5d
    aP5e
    aP70
    aP71
    aP72
    aP73
    aP74
    aP75
    aP76
    aP77
    aP78
    aP79
    aP7a
    aP7b
    aP7c
    aP7d
    aP7e
    aP7f
    aP80
    aPMX
    bFRC
    bFRS
    bHLD
    bPHD
    bRIN
    bVDN
    bVUP
    ceNn
    ceP0
    ceP1
    cePB
    cePC
    cePD
    cePa
    cePm
    cePw
    cePz
    ceU0
    ceU1
    cmD1
    cmPC
    cmPN
    cmPS
    cmPz
    cmTa
    cmTb
    cmTd
    csD0
    csP0
    csP1
    csPB
    csPC
    csPD
    csPa
    csPw
    csU0
    csU1
    fcB0
    fdS0
    fdS1
    fdS2
    fdS3
    fdS4
    fiB0
    fpC0
    fpS0
    fpS1
    fspz
    ft00
    ft01
    ft02
    ft03
    ft04
    ft05
    ft06
    ft07
    ft08
    ft09
    ft10
    ft11
    ft12
    ft13
    ft14
    ft15
    ft18
    ftA0
    ftA1
    ftB0
    ftE0
    ftG0
    ftG1
    ftG2
    ftH0
    ftH1
    ftN0
    ftP0
    ftP1
    ftP2
    ftP3
    ftP4
    ftP5
    ftP6
    ftP7
    ftP8
    ftR0
    ftR1
    ftR2
    ftR3
    ftR4
    ftS0
    ftS1
    gP00
    gP01
    gP02
    gP03
    gP04
    gP05
    gP06
    gP07
    gP08
    gP09
    gP0a
    gP0b
    gP0c
    gP0d
    gP0e
    gP0f
    gP10
    gP11
    gP12
    gP13
    gP14
    gP15
    gP16
    gP17
    gP18
    gP19
    gP1a
    gp08
    gp0b
    gp0e
    iaD1
    iaD2
    iaD3
    iaD4
    isNn
    isP0
    isP1
    isPB
    isPC
    isPD
    isPa
    isPm
    isPw
    isPz
    isU0
    isU1
    mTPL
    mUTL
    maP0
    maP1
    maPB
    maPC
    maPD
    maPa
    maPe
    maPw
    maU0
    maU1
    mlD0
    mlD1
    mlD2
    mlD3
    mlD4
    mlP0
    mlP1
    mlPB
    mlPC
    mlPD
    mlPa
    mlPw
    mlT0
    mlT1
    mlTh
    mlTp
    mlU0
    mlU1
    mmPN
    mxT0
    nn00
    oF00
    oF01
    oKI4
    oKI5
    oKI6
    oKI7
    oKP4
    oKP5
    oKP6
    oKP7
    ocex
    ocey
    of00
    of01
    of10
    of11
    of12
    ofE0
    ofE1
    oft1
    oft3
    oft5
    oft7
    oft9
    oftb
    oftd
    oftf
    ofti
    oisu
    oisy
    oke0
    oke1
    oki0
    oki1
    okia
    okib
    okic
    okid
    okie
    okin
    okix
    okiy
    okp0
    okp1
    okpa
    okpb
    okpc
    okpd
    okpe
    okpn
    okpx
    okpy
    oof0
    oof1
    oof2
    oof3
    oof4
    oof5
    oof6
    oof7
    oof8
    oof9
    oofA
    oofa
    oofb
    oofc
    oofd
    oofe
    ooff
    oofg
    oop1
    oop2
    opmn
    opmx
    otSC
    oumn
    oumx
    ov01
    ov02
    ov03
    ov04
    ov10
    ov11
    ov12
    ov13
    ov14
    ov15
    ov16
    ov20
    ov21
    ov22
    ov23
    ov24
    ov25
    ov26
    ovC1
    ovC2
    ovC3
    ovC4
    ovC5
    ovE0
    ovE1
    ovE2
    ovE3
    ovE4
    ovE5
    ovE6
    ovE7
    ovE8
    ovE9
    ovEa
    ovEb
    ovEc
    ovEd
    ovEe
    ovEf
    ovEg
    ovEh
    ovEi
    ovEj
    ovEk
    ovEl
    ovEm
    ovEn
    ovEo
    ovEt
    ovEy
    ovEz
    ovM1
    ovM2
    ovM3
    ovM4
    ovM5
    ovPT
    ovpt
    pcAD
    pcBK
    pcBS
    pcHS
    pcIO
    pcLD
    pcRT
    pmFC
    pmHC
    pmVC
    rARA
    rARa
    rASO
    rASo
    rBK0
    rBK1
    rBK2
    rBK3
    rBK4
    rBK5
    rBK6
    rBK7
    rBK8
    rBK9
    rBKa
    rBKb
    rBKd
    rBSW
    rCPU
    rCTL
    rLD0
    rLD1
    rLD2
    rLD3
    rLD5
    rLD7
    rLD8
    rLDa
    rLDb
    rLDd
    rLDe
    rLDg
    rLDk
    rLOW
    rRAM
    rSOC
    rVD2
    rVDA
    rVDB
    rVDF
    rWRM
    rbk5
    rbk6
    rbk8
    rbka
    rbkc
    rbke
    rld4
    rld6
    rldc
    rldf
    rldh
    rldi
    sEEC
    sEOC
    uu00
    uuD0
    uuNn
    uuP0
    uuP1
    uuPB
    uuPa
    uuPw
    uuPz
    uuU0
    uuU1
    uuZ0
    uusn
    voD0
    voP0
    voTl
    voTn
    voTp
    voU0
    w000
    w001
    xDPE
    xPPT
    xUPT
    zEAO
    zES0
    zSAa
    zSAc
    zSAi
    zSEi
    zSEj
    zSEm
    zSEs
    zSEw
    zSLa
    zSLc
    zSLi
    zSPa
    zSPc
    zSPi
    zSPm
    zSPn
    zSPp
    

    SMCkeys on Monterey 12.6:

    #KEY
    $Adr
    $Num
    +LKS
    ADC0
    ADC1
    ADC2
    ADC3
    ADC4
    ADC5
    ADC6
    ADC7
    ADC8
    ADC9
    ADCa
    ADCb
    ADCc
    ADCd
    ADCe
    ADCf
    ADCg
    ADCh
    ADCi
    ADCj
    ADCk
    ADCl
    ADCm
    ADCn
    ALSC
    AUPO
    BATP
    BEMB
    BNum
    BSIn
    CLK!
    CLKC
    CLKH
    CLKS
    CLKT
    CLSD
    CLWK
    CRCA
    CRCB
    CRCC
    CRCF
    CRCK
    CRCR
    CRCU
    CRCa
    CRCb
    CRCc
    CRCr
    CRCu
    DID0
    DID1
    DM0C
    DM0F
    DM0I
    DM0M
    DM0P
    DM0S
    DM0T
    DM0b
    DM0g
    DM0h
    DM1C
    DM1F
    DM1I
    DM1M
    DM1P
    DM1S
    DM1T
    DM1b
    DM1g
    DM1h
    DMP!
    DMS!
    DPLM
    DT0A
    DT0B
    DT0C
    DT1A
    DT1B
    DT1C
    ECIP
    ECIT
    EECC
    ENV0
    EPCA
    EPCF
    EPCI
    EPCV
    EPMA
    EPMI
    EPUA
    EPUF
    EPUI
    EPUV
    EVCT
    EVHF
    EVMD
    EVRD
    EVSL
    F0Ac
    F0ID
    F0Mn
    F0Mt
    F0Mx
    F0Tg
    FNum
    FPDc
    FRmn
    FRmp
    FS! 
    FSDc
    G3AO
    G3WD
    HBKP
    HBKT
    HDBS
    HDST
    HDSW
    IAPC
    IAPc
    IC0C
    IC0R
    IC0c
    IC0r
    IC1C
    IC1c
    IC2C
    IC2c
    ID0R
    ID0r
    ID1R
    ID1r
    IH1R
    IH1r
    IH2R
    IH2r
    IM0C
    IM0c
    IN0R
    IN0r
    IN1R
    IN1r
    LAcN
    LAtN
    LC2D
    LC2E
    LCCC
    LCCN
    LCCQ
    LCKA
    LCKN
    LCLD
    LCLG
    LCSA
    LCTN
    LCTQ
    LDEN
    LDI2
    LDKN
    LDLG
    LDS4
    LDSP
    LDT1
    LDT2
    LDT4
    LDTF
    LDWE
    LS! 
    LSCF
    LSDD
    LSDU
    LSFD
    LSFU
    LSLB
    LSLF
    LSLN
    LSOF
    LSOO
    LSPV
    LSRB
    LSSB
    LSSE
    LSSS
    LSSV
    LSUP
    MACA
    MACM
    MACR
    MSAL
    MSAc
    MSAf
    MSAg
    MSAm
    MSDW
    MSG3
    MSLD
    MSLF
    MSLG
    MSLP
    MSLS
    MSLT
    MSLU
    MSPA
    MSPB
    MSPC
    MSPI
    MSPM
    MSPS
    MSPT
    MSRC
    MSSD
    MSSF
    MSSG
    MSSP
    MSSR
    MSSS
    MSTC
    MSTS
    MSTc
    MSTe
    MSTf
    MSTi
    MSTm
    MSWr
    MSXC
    MSXD
    MSXK
    MSXN
    MSXS
    MSXb
    MSXc
    MSXd
    MSXk
    MSXm
    MSXn
    MSXs
    MSa!
    MSac
    MSaf
    MSag
    MSam
    MSap
    MSci
    MScr
    MSii
    MSir
    MVDS
    MVS4
    NATJ
    NATi
    NOPB
    NTOK
    ONMI
    PAPC
    PC0C
    PC0R
    PC0Z
    PC1C
    PC2C
    PCP2
    PCPC
    PCPG
    PCPL
    PCPT
    PD0D
    PD0E
    PD0F
    PD0J
    PD0K
    PD1R
    PDCC
    PDTR
    PDTZ
    PFHC
    PH1R
    PH2R
    PHPC
    PM0C
    PN0R
    PN1R
    PSHC
    PSTR
    PZ0E
    PZ0F
    PZ0T
    PZ1T
    PZGT
    RBr 
    REV 
    RMde
    RPlt
    RSvn
    RVBF
    RVCR
    RVUF
    SAS!
    SBF 
    SBFC
    SBFD
    SBFE
    SBFL
    SBFN
    SBFU
    SBFV
    SCIA
    SCIB
    SCII
    SCIL
    SCXC
    SDAF
    SDAS
    SFBR
    SIS!
    SIT!
    SMBC
    SMBG
    SMBR
    SMBS
    SMBW
    SPDO
    SPH0
    SPHR
    SPHS
    SPHT
    SPHZ
    SPT!
    SPU!
    SPV!
    SRS!
    TA0P
    TA0p
    TA1P
    TA1p
    TC0C
    TC0D
    TC0E
    TC0F
    TC0G
    TC0J
    TC0P
    TC0c
    TC0d
    TC0p
    TC1C
    TC1c
    TC2C
    TC2c
    TC3C
    TC3c
    TCFC
    TCGC
    TCGc
    TCPG
    TCSC
    TCSc
    TCTD
    TCXC
    TCXc
    TCXr
    TH0A
    TH0B
    TH0C
    TH0F
    TH0O
    TH0X
    TH0a
    TH0b
    TH0c
    TH0o
    TH1A
    TH1B
    TH1C
    TH1F
    TH1O
    TH1X
    TH1a
    TH1b
    TH1c
    TH1o
    TI0P
    TI0p
    TI1P
    TI1p
    TM0P
    TM0S
    TM0p
    TMBS
    TP0P
    TP0p
    TPCD
    TPCd
    TW0P
    TW0p
    Tp0C
    Ts0G
    Ts0S
    UBDC
    UFIS
    UPRC
    UREV
    URPP
    URWD
    USR0
    USR1
    USR2
    USR3
    VC0C
    VC0Z
    VC0c
    VC2C
    VC2c
    VD0R
    VD0Z
    VD0r
    VM0R
    VM0r
    VN0R
    VN0r
    Vp0C
    Vp0c
    WCPD
    WCPW
    WKEN
    WOr0
    WOw0
    ZPEN
    zDBG
    zDSF
    
    opened by alaneuler 0
  • Wanted fan support for MacBookPro16,1

    Wanted fan support for MacBookPro16,1

    Here are the fan keys (or at any rate, keys beginning with F) on a MacBook Pro (16-inch, 2019) aka MacBookPro16,1:

    F0AH [spf0] 5971 (bytes 17 53) F0AL [spf0] 5616 (bytes 15 f0) F0Ac [flt ] (bytes 15 cf 60 45) F0Dc [flt ] (bytes 99 16 d1 3e) F0Fb [ui8 ] 1 (bytes 01) F0Fc [ui16] 4 (bytes 00 04) F0Md [ui8 ] 0 (bytes 00) F0Mn [flt ] (bytes 00 80 e5 44) F0Mx [flt ] (bytes 00 80 af 45) F0Sf [ui16] 0 (bytes 00 00) F0St [ui8 ] 5 (bytes 05) F0Tg [flt ] (bytes 00 b0 62 45) F1AH [spf0] 5971 (bytes 17 53) F1AL [spf0] 5200 (bytes 14 50) F1Ac [flt ] (bytes cb 78 51 45) F1Dc [flt ] (bytes 9f 9d c0 3e) F1Fb [ui8 ] 1 (bytes 01) F1Fc [ui16] 4 (bytes 00 04) F1Md [ui8 ] 0 (bytes 00) F1Mn [flt ] (bytes 00 80 d4 44) F1Mx [flt ] (bytes 00 80 a2 45) F1Sf [ui16] 0 (bytes 00 00) F1St [ui8 ] 5 (bytes 05) F1Tg [flt ] (bytes 00 f0 51 45) FAC0 [ui8 ] 0 (bytes 00) FAC1 [ui8 ] 0 (bytes 00) FAC2 [ui8 ] 0 (bytes 00) FAC3 [ui8 ] 0 (bytes 00) FBAD [hex_] (bytes 00 00 00 00) FNum [ui8 ] 2 (bytes 02) FOff [ui8 ] 0 (bytes 00) FRmp [ui16] 0 (bytes 00 00)

    Note that there is NO F0ID or F1ID key provided!

    Below are the F... keys listed in https://app.assembla.com/wiki/show/fakesmc with some description of what they are.

    It seems it should be possible to show fan info (F#Ac, etc) when there is no corresponding F#ID key, by simply calling it fan 0 etc.

    F0Ac fpe2 2 K_VAR_ATOM_RW Fan0 Actual RPM, DIAG_LOG F0ID {fds K_CONST Fan0 Description F0Mn fpe2 2 K_VAR_ATOM_RW Fan0 Minimum RPM F0Mt ui16 2 K_VAR_ATOM_RW Fan0 Max calculated target RPM F0Mx fpe2 2 K_VAR_ATOM_RW Fan0 Maximum RPM F0Sf fpe2 2 K_VAR_ATOM_RW Fan0 Safe RPM F0Tg fpe2 2 K_VAR_ATOM_RW Modify this in conjunction with Fan force bit [0] to set fan speed.
    F1Ac fpe2 2 K_VAR_ATOM_RW Fan1 Actual RPM F1ID {fds K_CONST Fan1 Description F1Mn fpe2 2 K_VAR_ATOM_RW Fan1 Minimum RPM F1Mt ui16 2 K_VAR_ATOM_RW Fan1 Max calculated target RPM F1Mx fpe2 2 K_VAR_ATOM_RW Fan1 Maximum RPM F1Sf fpe2 2 K_VAR_ATOM_RW Fan1 Safe RPM F1Tg fpe2 2 K_VAR_ATOM_RW Modify this in conjunction with Fan force bit [1] to set fan speed.
    F2Ac fpe2 2 K_VAR_ATOM_RW Fan2 Actual RPM F2ID {fds K_CONST Fan2 Description F2Mn fpe2 2 K_VAR_ATOM_RW Fan2 Minimum RPM F2Mt ui16 2 K_VAR_ATOM_RW Fan2 Max calculated target RPM F2Mx fpe2 2 K_VAR_ATOM_RW Fan2 Maximum RPM F2Sf fpe2 2 K_VAR_ATOM_RW Fan2 Safe RPM F2Tg fpe2 2 K_VAR_ATOM_RW Modify this in conjunction with Fan force bit [2] to set fan speed.
    FNum ui8 1 K_CONST Number of supported fans. FPhz si16 2 KPRIV_VAR_ATOM_RW Programmable Fan Phase offset affects all fans. Signed value has legal values between 0 and 360. Default is 360 (no change). FS! ui16 2 K_VAR_ATOM_RW Fan force bits. FS![15:0] Setting bit to 1 allows for external control over fan speed target and prevents thermal manager from actively overidding value set via key access.

    opened by rlhamil 0
  • SMCWrite error while setting the fan PRM

    SMCWrite error while setting the fan PRM

    When I tried to write smc to set the fan RPM, it returned like this "smc.swift:callSMC(inputStruct:outputStruct:) - IOReturn = -536870207 - kSMC = 0". I figured out the IOReturn code means kIOReturnNotPrivileged. Does anyone have ideas how to solve this problem?

    opened by envoytak 5
  • Refactor for Swift 5 / Xcode 11

    Refactor for Swift 5 / Xcode 11

    • Updated project to build on Swift 5 / Xcode 11
    • Added ability to read CLKT key (SMC Clock)
    • Tweaked the unknown temp sensors to also print the SMC Key
    • Fixed celsius typo
    • Stubbed out a section to enumerate power related keys (future)
    • Other misc stuff.
    opened by frankgraziano 0
  • Fan keyNotFound on latest macpro

    Fan keyNotFound on latest macpro

    smckit gives :

    AMBIENT_AIR_0 11.0°C which is not the case

    CPU_0_DIE -70.0°C negative temp ?

    and for fan

    keyNotFound(code: "F0ID") keyNotFound(code: "BATP")

    opened by Arthur111 1
Releases(v0.1.0)
  • v0.1.0(Oct 9, 2017)

    • Updated to Swift 3.1 (Xcode 8.3.3). Thanks to @alexpovh & @perfaram for the help on this!
    • [#15] [Addressed] WIRELESS_MODULE (TW0P) temperature sensor misreports 129°C on MacBookPro11,1
    • [SMCKitTool] New -u, --unknown-temperature-sensors flag
      • Show the list of temperature sensors whose hardware mapping is unknown.

    Versions

    Xcode 8.3.3
    Build version 8E3004b
    Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42)
    
    Source code(tar.gz)
    Source code(zip)
  • v0.0.15(Aug 5, 2015)

    • Updated to Swift 2.0 (Xcode 7 Beta 3)
    • [SMCKitTool] Version 0.0.2
    • [#20] [Completed] Update to Swift 2.0
    Xcode 7.0
    Build version 7A152u
    Apple Swift version 2.0 (swiftlang-700.0.45 clang-700.0.57.2)
    
    Source code(tar.gz)
    Source code(zip)
  • v0.0.14(Jun 15, 2015)

    • Updated to Xcode 6.3.2 Gold Master
    • New SMCKitTool (smckit(1)) command line tool for interfacing with the SMC
      • Version 0.0.1
      • Replaces Example target
      • Added CommandLine as a Git submodule, used for the CLI
      • Makefile added to build from command line
      • Manual page added via ronn
    • New powermetricsTests for cross-referencing with Apple’s powermetrics(1) tool
    • New temperature sensor CPU_0_DIE (TC0F) discovered via DTrace script
    • Internal cleanup
    • [#1] [Completed] Unit tests via XCTest
    • [#2] [Closed] Programmatically elevate privileges for writes
    • [#11] [Closed] Use array instead of enumerating values in SMCParamStruct
    • [#16] [Addressed] How to use in a swift project
    Xcode 6.3.2
    Build version 6D2105
    Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
    
    Source code(tar.gz)
    Source code(zip)
  • v0.0.13(Mar 12, 2015)

  • v0.0.12(Feb 26, 2015)

  • v0.0.11(Feb 12, 2015)

  • v0.0.10(Jan 12, 2015)

    • Switch to MIT license
    • SMC now a struct
    • More unit tests
    • Completed/Closed:
      • #3 - Generate API doc
      • #6 - Use type properties once supported by Swift
      • #10 - Replace open() & close() with failable init() + deinit
    Source code(tar.gz)
    Source code(zip)
  • v0.0.9(Dec 2, 2014)

    • Improved getAllValidTMPKeys() (now getAllValidTemperatureKeys())
    • Added maxNumberBatteries()
    • More detailed example
    • I/O Kit return codes are now full 32-bit values (correct return code). Now at global scope
    • More tests
    • Internal cleanup
    • Renamed
      • getAllValidTMPKeys() -> getAllValidTemperatureKeys()
      • getFanInfo() -> getFanInformation()
      • getTMP() -> getTemperature()
      • TMP -> Temperature
      • TMP_UNIT -> TemperatureUnit
      • FAN -> Fan
      • NUM_KEYS -> COUNT
      • SMC_KEY -> SMCKeyMisc
    • Few enums now private
      • Fan
      • SMCKeyMisc
      • DataType
    Source code(tar.gz)
    Source code(zip)
  • v0.0.8(Nov 1, 2014)

    • Update to Xcode 6.1 (no code changes)
    • Completed:
      • #5 - Add debug logging
      • #7 - Convert Xcode project to "Cocoa Framework"
    • New temperature sensor SMC key - PALM_REST
    Source code(tar.gz)
    Source code(zip)
  • v0.0.7(Oct 12, 2014)

    • Rename swift-smc -> SMCKit
    • Update to Xcode 6.1 GM seed 2 (no code changes)
    • New methods:
      • isCharging()
      • isACPresent()
      • isBatteryOk()
    • Improvements to machineProfile()
    Source code(tar.gz)
    Source code(zip)
  • v0.0.6(Sep 24, 2014)

    • New methods
      • isBatteryPowered()
      • isOpticalDiskDriveFull()
      • getFanName()
    • Additional TMP SMC keys
      • LCD_PROXIMITY
      • MISC_PROXIMITY
      • ODD_PROXIMITY
      • PWR_SUPPLY_PROXIMITY
      • HEATSINK_0
      • HEATSINK_1
      • HEATSINK_2
    • Rename HARD_DRIVE_BAY -> HDD_PROXIMITY
    Source code(tar.gz)
    Source code(zip)
  • v0.0.5(Sep 20, 2014)

    • Rename methods
      • openSMC() -> open()
      • closeSMC() -> close()
    • Completed https://github.com/beltex/swift-smc/issues/4
      • Add machineProfile() method
      • Add getAllValidTMPKeys() method
    • Simplified example client
    • Use of type methods
    Source code(tar.gz)
    Source code(zip)
  • v0.0.4(Sep 15, 2014)

    • Update to Xcode 6.1 Beta 2 - Swift 1.1
      • Minor enum related changes
    • writeSMC() writes all 32 bytes, checks given data matches expected input
    • Cleaned up isKeyValid()
    Source code(tar.gz)
    Source code(zip)
  • v0.0.3(Sep 10, 2014)

    • Update to Xcode 6.1 Beta (no code changes related to this)
    • Fixed setFanRPM() -> setFanMinRPM()
    • Add examples dir
    • New getNumSMCKeys() method
    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Aug 19, 2014)

  • v0.0.1(Aug 17, 2014)

Owner
Omeed
Software Engineer
Omeed
☎️ NextcloudKit Apple library

NextcloudKit Installation Carthage Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary framework

Nextcloud 9 Jan 4, 2023
A Swift cross-platform (Apple and Linux) networking library.

KippleNetworking A Swift library that offers cross-platform (Apple and Linux) networking support, intended for the creation of cross-platform SDKs to

Kipple 11 Sep 20, 2022
Command line tool for exporting resources and generating code from your Figma files

Fugen Fugen is a command line tool for exporting resources and generating code from your Figma files. Currently, Fugen supports the following entities

Almaz Ibragimov 69 Dec 17, 2022
A little beautifier tool for xcodebuild

xcbeautify xcbeautify is a little beautifier tool for xcodebuild. Similar to xcpretty, but faster. Features 2x faster than xcpretty. Human-friendly an

Thi Doãn 649 Dec 23, 2022
A Swift command line tool for generating your Xcode project

XcodeGen XcodeGen is a command line tool written in Swift that generates your Xcode project using your folder structure and a project spec. The projec

Yonas Kolb 5.9k Jan 9, 2023
Swift sample app for running privileged operations on macOS using a helper tool

SwiftAuthorizationSample demonstrates how to run privileged operations on macOS using a helper tool managed by launchd. This sample was created with t

null 31 Dec 20, 2022
Open-source jailbreaking tool for many iOS devices

Open-source jailbreaking tool for many iOS devices *Read disclaimer before using this software. checkm8 permanent unpatchable bootrom exploit for hund

null 0 Nov 6, 2021
A GUI based virtualisation tool for running Linux on macOS Big Sur (x86 or arm64)

Project Mendacius GUI based virtualization tool to run Linux, based on the Virtualization framework introduced by Apple for macOS Big Sur with support

Praneet 113 Nov 18, 2022
A command line tool for managing Swift Playground projects on your Mac.

swift-playground-tools A command line tool for managing Swift Playground projects on your Mac. Generate Xcode Project $ playground-tools generate-xcod

Liam Nichols 0 Dec 31, 2021
FocusSpace - A time-management tool to help you stay focus with your friends

FocusSpace ?? ElleHacks2022 - (Telus) First Place ?? Developers Manyi Cheng(@man

Manyi Cheng 1 Feb 13, 2022
ExpoMod - a small application tool that lets you quickly setting up your computer for presentations / exhibitions

ExpoMod is a small application tool that lets you quickly setting up your computer for presentations / exhibitions. Or simply having useful shortcut to not being distract and keep awake your computer.

Niemes 10 Jun 29, 2022
A tool to read the binarycookie format of Cookies on iOS applications

BinaryCookieReader Cloned from http://securitylearn.net/wp-content/uploads/tools/iOS/BinaryCookieReader.py ##Usage Python BinaryCookieReader.py [Cooki

Murphy 77 Nov 15, 2022
Cocoapods project gen tool.

cocoapods-project-gen A gem which can gen cocoapods project. Installation Add this line to your application's Gemfile: gem 'cocoapods-project-gen' And

Cat1237 8 Oct 28, 2022
Mimicrated views and controls to native Apple appearance.

Mimicrated views and controls to native Apple appearance. If you have any ideas of what elements can be added, let me know. Below you will see previews of all the elements and how to use them.

Ivan Vorobei 85 Dec 3, 2022
A apple search ads attribution plugin for flutter

A apple search ads attribution plugin for flutter

liam 0 Oct 27, 2021
A collection of Swift Tutorials built with Apple's DocC.

Swift Tutorials This is not a package, it's just a bunch of tutorials This project uses Apple's DocC (Documentation Compiler) to create a set of Swift

Swift Innovators Network 11 Aug 9, 2022
An Apple Watch remake of the Poketch from Pokemon Diamond and Pearl made with SwiftUI

Apple Watch Poketch What is it? It's an Apple Watch remake of the "Poketch" from Pokemon Diamond and Pearl made with SwiftUI! Check out the YouTube vi

André Arko 1 Nov 19, 2021
Home Assistant for Apple Platforms

Home Assistant for Apple Platforms Getting Started Home Assistant uses Bundler, Homebrew and Cocoapods to manage build dependencies. You'll need Xcode

null 0 Nov 23, 2021
Open-source implementation of Apple's Combine for processing values over time

CombineX 简体中文 Open-source implementation of Apple's Combine for processing values over time. Though CombineX have implemented all the Combine interfac

Luo Xiu 1 Dec 30, 2021