Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // --------- AirPower Prototype Unit - Developer Output --------- //
- // --------- Compiled by 91Tech --------- //
- // @91_tech - https://twitter.com/91_tech - https://www.instagram.com/91_tech/ - https://www.youtube.com/91tech //
- The following is the output from a 2017 AirPower prototype using 'nanocom' on MacOS Catalina and a serial lightning to USB-A cable. This unit contains 22 coils and appears to be fully functional, though it hasn't been setup to charge any device.
- For any inquiries, you can contact @91_tech or @appledemoyt.
- Video looking at the AirPower unit: https://youtu.be/2Mb_LXJyHFw
- * For the privacy of the software engineer, their name has been adjusted to "John Doe". *
- // --------- Initial Output --------- //
- Jun 7 2017, 17:22:52
- BUILDER: John Doe (jdoe)
- HOSTNAME: john-J45.local
- GIT BRANCH: 'P2T_Factory'
- GIT HASH: 0aa885b (0aa885bba26749b83522037d93c5bd5629a2c85b)
- COMPILER: 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)
- [main] Board Rev ADC: 1258 mV
- [main] Board ID: P2
- ERROR: Free air calibration data is missing
- WARNING: Ferrite calibration data is missing
- WARNING: Aluminum calibration data is missing
- [FPGAFWU] Booting FPGA into mode 0
- [FPGAFWU] FPGA v14.00 up to date with v14, no update necessary
- [FPGAFWU] Booting FPGA into mode 0
- [secureCB] Secure Control Bits already initialized, nothing to do..
- [secureCB] Secure Control Bits initialized
- NCO communication succeeded @ 1250000 Mbps
- FPGA PRODUCT ID = 5, VERSION = 14
- LSI measured to be: 39232 Hz
- No startup commands to run.
- CCG2 already up to date
- // --------- Available Commands --------- //
- B431-22-P2> help
- Available commands:
- cal
- cpld
- dev
- fault
- fpga
- diags
- od
- inband
- send_comm
- send_comm_off
- ask
- demod
- get
- hf_rfid
- coils
- lp
- hist
- hpi
- i2c
- log
- nco
- nvs
- set
- reset
- spi_flash
- usb
- help
- // --------- Using Commands --------- //
- Commands are shown in order of appearance on the 'help' command. Note some commands were not tried due to risk of bricking or erasing the AirPower device. Anything deemed safe was attempted and is available here.
- Note that some outputs link to external pastebins as they are too long (& mainly redundant) for this document.
- If [command + 'help'] is not shown, it is because there is no given output. Generally this will give us the sub-prompts, but in some cases there are none.
- Some commands also seemingly do nothing. These will still be shown with the output reading "[no output]".
- // --------- CALIBRATION --------- //
- B431-22-P2> cal help
- Available commands:
- air
- ferrite
- aluminum
- erase
- help
- -- CAL Commands - https://pastebin.com/yYF4G18n --
- Upon running calibration commands for 'air', 'ferrite' and aluminum', the errors seen upon boot & reset disappeared. Updated output can be found on the calibration document.
- * Command 'erase' was not tried, though it can be assumed that it erases the calibration data. *
- // --------- CPLD --------- //
- B431-22-P2> cpld help
- Available commands:
- read
- reset
- write
- invert
- help
- B431-22-P2> cpld read
- [CPLDControl] Read @ 0x0000 (1):
- 00
- B431-22-P2> cpld read 1
- [CPLDControl] Read @ 0x0001 (1):
- 00
- B431-22-P2> cpld read 91
- [CPLDControl] Read @ 0x005b (1):
- F0
- B431-22-P2> cpld invert
- coil 0 ouput is inverted
- B431-22-P2> cpld invert
- coil 0 ouput is non-inverted
- -- CPLD stands for 'Complex Programmable Logic Device' --
- https://en.wikipedia.org/wiki/Complex_programmable_logic_device
- * Command 'reset' and 'write' were not tried. Using 'reset' likely would've reset the data read at the given parameter- note 'read 1', 'read 91' and so on- whereas 'write 1 00' likely would write '00' at 0x0000, judging by the formatting. *
- // --------- DEV --------- //
- B431-22-P2> dev help
- Available commands:
- ping
- test
- help
- B431-22-P2> dev ping
- [No output]
- B431-22-P2> dev test
- [No output]
- * We do not know what 'dev' actually does, as no output is given. It likely needs to be used in conjunction with another command, and is either short for 'developer/development' or 'device'. *
- // --------- FAULT --------- //
- B431-22-P2> fault
- *** BUS FAULT ***
- CPU Registers:
- R0: 0xdeadbeef R1: 0x30000000 R2: 0x00000000
- R3: 0x0803e92d R12: 0x00000000 LR: 0x080319fb
- PC: 0x080319fa PSR: 0x21000000
- SCB Registers:
- SHCSR: 0x00070002
- CFSR: 0x00000400
- HFSR: 0x00000000
- DFSR: 0x00000000
- BFAR: 0xe000ed38
- AFSR: 0x00000000
- -- 'fault' crashes the device, to the point it needs to be manually unplugged and plugged back in to work again. The initial output is unchanged. --
- * 'fault help' gives the same result as 'fault', so any argument is ignored (or in other words, as soon as AirPower sees 'fault', it freezes up regardless of what comes next.) *
- // --------- FPGA --------- //
- B431-22-P2> fpga help
- [FPGAFWU] Unsupported Command
- -- A field-programmable gate array is an integrated circuit designed to be configured by a customer or a designer after manufacturing – hence the term field-programmable. --
- https://en.wikipedia.org/wiki/Field-programmable_gate_array
- * It is unknown what this command does. FPGA is referenced in the initial output and 'log', and is a sub-prompt under 'inband'. *
- // --------- DIAGS --------- //
- B431-22-P2> diags help
- Available commands:
- auth
- scb
- tristar
- get
- set
- od
- lpd
- rfid
- toggle
- brick
- nvm
- protection
- rx_dev_cal
- help
- --- DIAGS AUTH ---
- B431-22-P2> diags auth help
- Available commands:
- ver
- status
- cert
- help
- B431-22-P2> diags auth ver
- ERROR: unable to read version register
- B431-22-P2> diags auth status
- ERROR: auth self test failed
- B431-22-P2> diags auth cert
- Failed to read Certificate size
- --- DIAGS GET ---
- B431-22-P2> diags get help
- Available commands:
- fgsn
- mlbsn
- ccasn
- tmp103
- crit
- help
- B431-22-P2> diags get fgsn
- <not set>
- B431-22-P2> diags get mlbsn
- FYW724600A0HXDDDP
- B431-22-P2> diags get ccasn
- FYX724302KUJ31X1D
- B431-22-P2> diags get tmp103
- [i2c] [0xe0] 23 C
- [i2c] [0xe1] 23 C
- [i2c] [0xe2] 24 C
- [i2c] [0xe3] 24 C
- [i2c] [0xe4] 23 C
- B431-22-P2> diags get crit
- Current Timestamp: 787791
- Error Flags:
- OTP: false [0]
- OCP: false [0] [ 0 0 0 0 0 0 0 0 ]
- OVP: false [0]
- UVP: false [0]
- --- DIAGS OD ---
- B431-22-P2> diags od help
- coil=0, freq=161326.5152, inductance=2.4331, impedance=0.2058, q_factor=11.9817, isLinear=TRUE
- B431-22-P2> diags od 0
- coil=0, freq=104350.3488, inductance=5.8155, impedance=0.6216, q_factor=6.1339, isLinear=FALSE
- B431-22-P2> diags od 1
- coil=1, freq=52362.8864, inductance=18.1785, impedance=0.3792, q_factor=15.7689, isLinear=FALSE
- B431-22-P2> diags od 2
- coil=2, freq=100610.7136, inductance=5.3907, impedance=0.8734, q_factor=3.9014, isLinear=FALSE
- --- DIAGS NVM ---
- B431-22-P2> diags nvm dump
- 0x08004000: ffffffff ffffffff ffffffff ffffffff
- -- Full output: https://pastebin.com/A2hu4XxN --
- -- REST OF DIAGS --
- B431-22-P2> diags set help
- Available commands:
- fgsn
- mlbsn
- ccasn
- help
- * Did not attempt 'set' commands *
- B431-22-P2> diags lpd help
- Available commands:
- clock
- sleep
- run
- transient
- start
- sample
- scan
- PWM_on
- PWM_off
- baseline
- get_baselines
- threshold
- fatp
- help
- B431-22-P2> diags rfid help
- Available commands:
- baseline
- get_baselines
- ramp
- scan
- fct
- set_frequency
- help
- * 'lpd' and 'rfid' return the same outputs as their commands without 'diags' *
- // --------- OD --------- //
- B431-22-P2> od
- [no output]
- -- 'od' is a command on various operating systems for displaying ("dumping") data in various human-readable output formats. The name is an acronym for "octal dump" since it defaults to printing in the octal data format. --
- https://en.wikipedia.org/wiki/Od_(Unix)
- * no output is ever given, regardless of 'help' or any attempted argument. 'diags od' however (as seen above) returns actual output. *
- // --------- INBAND --------- //
- B431-22-P2> inband help
- Available commands:
- ping_pong
- read_rx
- ping_response
- fpga_ping_pong
- send_fsk
- stop_fsk
- fsk_dma_debug
- fpga_init
- fpga_enable
- fpga_disable
- fpga_go
- fpga_reset
- fpga_gain_control
- fpga_read_reset
- fpga_read
- fpga_delay
- help
- // --------- SEND_COMM --------- //
- B431-22-P2> send_comm help
- invalid parameter
- send_comm [coil 1] [coil 2] [fsk_data] [power duty cycle] [duty cycle adjustment for comm] [power frequency] [fsk frequency] [delay in between packets] [repeat count] [bit rate]
- // --------- SEND_COMM_OFF --------- //
- B431-22-P2> send_comm_off help
- Invalid coil 0, or associated timer has been turned off
- // --------- ASK --------- //
- B431-22-P2> ask help
- demod = 1
- B431-22-P2> ask 0
- demod = 1
- B431-22-P2> ask 91
- 00:16:33.798 ### [ASSERT] inband_comm.c:1718 "enableASKComm", "coil != NULL"
- invalid parameter
- Usage: ask [coil number] [on/off] [demod number] [timeout]
- * AFTER USING 'demod on 1 0' AS SEEN BELOW: *
- B431-22-P2> ask 0 on 1 0
- demod = 1
- CPLD channels all used up, use ask off to free up channels
- B431-22-P2> ask off
- demod = 1
- CPLD channels all used up, use ask off to free up channels
- B431-22-P2> ask 0 off 1 0
- demod = 1
- // --------- DEMOD --------- //
- B431-22-P2> demod help
- usage: demod [on/off] [demod #] [mux #]
- B431-22-P2> demod
- usage: demod [on/off] [demod #] [mux #]
- B431-22-P2> demod on 1 0
- 00:17:36.789 ### [ASSERT] MuxDriver.c:441 "EnableDemodMuxWithIndex", "(muxNumber >= 1) && (muxNumber <= kNumberOfMuxesPerGroup)"
- * Note interactions with the 'ask' command as seen above. *
- B431-22-P2> demod on 1 1
- [no output]
- B431-22-P2> demod off 1 1
- [no output]
- // --------- GET --------- //
- B431-22-P2> get help
- Available commands:
- versions
- cs
- dev
- mcu_fw
- timer
- timers
- coil
- coils
- gpios
- sensors
- stats
- udid
- otp
- ver
- startup_cmds
- deadtime_phase_shift
- deadtime_force
- notch_filter
- help
- -- GET Commands - https://pastebin.com/Swq3aQf9 --
- // --------- HF_RFID --------- //
- B431-22-P2> hf_rfid help
- Available commands:
- baseline
- get_baselines
- ramp
- scan
- fct
- set_frequency
- help
- -- HF_RFID Commands - https://pastebin.com/vETSYvbi --
- * Command 'set_frequency' was not attempted. *
- // --------- COILS --------- //
- B431-22-P2> coils help
- Available commands:
- select
- help
- B431-22-P2> coils select
- select should have 1 parameter!
- B431-22-P2> coils select 0
- coil 0 selected.
- B431-22-P2> coils select 1
- coil 1 selected.
- B431-22-P2> coils select 21
- coil 21 selected.
- B431-22-P2> coils select 22
- coil 22 is out of range.
- B431-22-P2> coils select 91
- coil 91 is out of range.
- -- Individual coils can be selected, but it is unknown if there is a command that works in conjunction with this. However, it does allow us to see there are definitely 22 coils, going from [0-21]. Anything else is 'out of range'. --
- // --------- LP --------- //
- B431-22-P2> lp help
- Available commands:
- clock
- sleep
- run
- transient
- start
- sample
- scan
- PWM_on
- PWM_off
- baseline
- get_baselines
- threshold
- fatp
- help
- -- LP Commands - https://pastebin.com/MNyNNEyY --
- // --------- HIST --------- //
- B431-22-P2> hist
- [1]: help
- [2]: get ver
- [3]: hist
- -- 'hist', standing for "history", simply returns the commands used in the current session since the last reset --
- // --------- HPI --------- //
- B431-22-P2> hpi help
- Available commands:
- fw_read
- fw_write
- get
- pd_status
- select_pdo
- reset_state_machine
- ver
- help
- -- HPI Commands - https://pastebin.com/KmQmsuCg --
- // --------- I2C --------- //
- B431-22-P2> i2c help
- invalid command 'help'
- // --------- LOG --------- //
- B431-22-P2> log help
- [no output]
- B431-22-P2> log
- 00:00:51.814 === LogUtils ===
- brick L=info O1=console O1L= O2= O2L=
- device L=verbose O1=console O1L= O2= O2L=
- FPGAFWU L=info O1=console O1L= O2= O2L=
- hpi L=info O1=console O1L= O2= O2L=
- i2c L=info O1=console O1L= O2= O2L=
- main L=info O1=console O1L= O2= O2L=
- mux L=error O1=console O1L= O2= O2L=
- nco L=info O1=console O1L= O2= O2L=
- od L=error O1=console O1L= O2= O2L=
- secureCB L=info O1=console O1L= O2= O2L=
- tristar L=info O1=console O1L= O2= O2L=
- usb L=info O1=console O1L= O2= O2L=
- * it is unknown if 'log' works in conjunction with any other command *
- // --------- NCO --------- //
- B431-22-P2> nco help
- Available commands:
- init
- ver
- cmd
- fwup
- fwdn
- B431-22-P2> nco init
- NCO USART (re)initialized @ 0 baud.
- B431-22-P2> nco ver
- NCO version: 01.03.0002
- B431-22-P2> nco cmd
- nco_wait_for_response timed out!
- B431-22-P2> nco fwup
- [no output]
- B431-22-P2> nco fwdn
- [no output]
- B431-22-P2> nco ver
- nco_wait_for_response timed out!
- NCO version: 231.14.0016
- -- A numerically-controlled oscillator (NCO) is a digital signal generator which creates a synchronous (i.e. clocked), discrete-time, discrete-valued representation of a waveform, usually sinusoidal. --
- https://en.wikipedia.org/wiki/Numerically-controlled_oscillator.
- * Note the 'nco ver' gave different outputs between trying commands. *
- // --------- NVS --------- //
- B431-22-P2> nvs help
- Available commands:
- read { type }
- write { type } { ... }
- dump { length }
- erase
- B431-22-P2> nvs dump
- [nvs] [0x000f0000] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
- -- Output was large but all looks the same: https://pastebin.com/Bd9Fjn5j --
- // --------- SET --------- //
- B431-22-P2> set help
- Available commands:
- timer
- deadtime_phase_shift
- coil
- ramp
- show_adc
- dev
- otp
- startup_cmds
- gpio
- notch_filter
- help
- * Didn't try 'set' commands to stay on the safe side. *
- // --------- RESET --------- //
- B431-22-P2> reset
- resetting the board ...
- B431-22-P2 firmware version = 01090014
- Jun 7 2017, 17:22:52
- BUILDER: John Doe (jdoe)
- HOSTNAME: john-J45.local
- GIT BRANCH: 'P2T_Factory'
- GIT HASH: 0aa885b (0aa885bba26749b83522037d93c5bd5629a2c85b)
- COMPILER: 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)
- [main] Board Rev ADC: 1257 mV
- [main] Board ID: P2
- ERROR: Free air calibration data is missing
- WARNING: Ferrite calibration data is missing
- WARNING: Aluminum calibration data is missing
- [FPGAFWU] Booting FPGA into mode 0
- [FPGAFWU] FPGA v14.00 up to date with v14, no update necessary
- [FPGAFWU] Booting FPGA into mode 0
- [secureCB] Secure Control Bits already initialized, nothing to do..
- [secureCB] Secure Control Bits initialized
- NCO communication succeeded @ 1250000 Mbps
- FPGA PRODUCT ID = 5, VERSION = 14
- LSI measured to be: 39320 Hz
- No startup commands to run.
- CCG2 already up to date
- -- 'reset' reboots the device, and the initial output is given again. --
- // --------- SPI_FLASH --------- //
- B431-22-P2> spi_flash help
- Available commands:
- device_id
- jedec_id
- status
- chip_erase
- read
- write_byte
- B431-22-P2> spi_flash device_id
- manufacturer: 0xef
- device id: 0x13
- B431-22-P2> spi_flash jedec_id
- manufacturer: 0xef
- memory type: 0x40
- capacity: 0x14
- B431-22-P2> spi_flash status
- status: 0
- B431-22-P2> spi_flash read
- *** BUS FAULT ***
- CPU Registers:
- R0: 0x00000000 R1: 0x00000000 R2: 0x00000000
- R3: 0x10000e8c R12: 0x01000000 LR: 0x00000001
- PC: 0x08047000 PSR: 0x61000200
- SCB Registers:
- SHCSR: 0x00070002
- CFSR: 0x00008200
- HFSR: 0x00000000
- DFSR: 0x00000000
- BFAR: 0x01000000
- AFSR: 0x00000000
- * 'spi_flash read' caused the unit to crash, likely due to the lack of parameter. It had to be unplugged/plugged in manually to be reset. *
- B431-22-P2> spi_flash read 0
- 0 < length <= 1048576
- B431-22-P2> spi_flash read 1
- 0 < length <= 1048576
- B431-22-P2> spi_flash read 1048576
- 0 < length <= 1048576
- * 'spi_flash read' didn't seem to care about the parameter input, it wouldn't return anything. *
- -- Due to concerns about overwriting data, no other commands were attempted. --
- // --------- USB --------- //
- B431-22-P2> usb help
- Available commands:
- dfu
- test
- help
- B431-22-P2> usb dfu
- entered USB DFU mode
- B431-22-P2> usb test
- .........................B431-22-P2>
- -- Upon trying 'usb test', each '.' popped up one at a time slowly until it was finished. It was likely testing the USB connection though there was no output. --
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement