Interpreting Log Files: 1 - Initialization

I’m sure many of you saw the support instructions to a user detailing how to get access to the system logs.

Wonder what all that crap means? Let’s take a look! (you can download the logs from the link above and follow along at home, if you like)

You’ll see a whole list of files in there:

@400000005a5510b82b7438c8.u  @400000005a5510bb11862138.u  @400000005a7f05f91f9d52a0.s  @400000005a83d2222c953540.s
@400000005a5510b911104d28.u  @400000005a5510bb11866f58.u  @400000005a82625f03394970.s  @400000005a83d2d21de72aa8.s
@400000005a5510ba11db9438.u  @400000005a5510bb11afcd30.u  @400000005a837bcf3a0e1f20.s  @400000005a85cc321e210b10.s
@400000005a5510ba12383af8.u  @400000005a5510bb11d6c9a8.u  @400000005a838c63249af0f0.s  @400000005a86493737620e08.s
@400000005a5510ba1242b690.u  @400000005a5510bb12417258.u  @400000005a83b08d37ad5f48.s  @400000005a875f0a2304a920.s
@400000005a5510ba12b571a8.u  @400000005a5510bb13a74bb8.u  @400000005a83ccb400782da0.s  @400000005a87beca0bdf98b8.s
@400000005a5510ba2e450820.u  @400000005a5510bb15a66778.u  @400000005a83cd49347a3058.s  @400000005a88981c0ee24d80.s
@400000005a5510ba32054088.u  @400000005a5510bb15b4c728.u  @400000005a83cdf222c79468.s  @400000005a8ad9182e660570.s
@400000005a5510ba320bb8c8.u  @400000005a5510be1232a160.u  @400000005a83ce9f1461c9e8.s  @400000005a8afe991a536528.s
@400000005a5510bb105d29c8.u  @400000005a7a6f9627817eb0.s  @400000005a83cf63340dab18.s  @400000005a8e4a0f30fc34f8.s
@400000005a5510bb11249490.u  @400000005a7cfbc60e3cd238.s  @400000005a83d008316a73a0.s  @400000005a90d0af384c6250.s
@400000005a5510bb1170a920.u  @400000005a7e6af013635548.s  @400000005a83d0b3160ee960.s  config
@400000005a5510bb1185ac08.u  @400000005a7e88af2135e460.s  @400000005a83d17b3aedbd38.s  current

The files beginning with ‘@’ are archives. The ones ending with ‘.u’ are ones that have been uploaded to Glowforge.

current is the log file we’ll examine. It’s the log file written by the Glowforge daemon process that controls the machine.
The first line we see tells us about an error (Though, this one really isn’t a true error.):

2018-01-09_18:57:51.15840          3 ERROR: unable to read /data/glowforge.conf (2: No such file or directory, src/config.cpp:401)

This entry tells us 2 things:

  • One, it’s looking for a file on the /data partition (the ~3.5GB partition that holds the logs and survives firmware upgrades) named glowforge.conf. This is the local configuration override file. You can put config settings in here, and they will override the default ones that come with the firmware. What settings, you ask? The address of the API and WSS servers, and the signatures of their SSL certs. I’ll cover those in a future post.
  • Two, that the program that wrote this file (the /glowforge/glowforge service) was written in C++.

Next up, we have the PID of the daemon, and the buildtime of the firmware image:

2018-01-09_18:57:51.22832          4  INFO: PID: 620
2018-01-09_18:57:51.22834          4  INFO: Build time: Jan  8 2018 23:06:26
2018-01-09_18:57:51.22835          4  INFO: Start time: Jan  9 2018 18:57:51
2018-01-09_18:57:51.22836          4  INFO: Machine uptime: 15 sec

We’re then presented with some information courtesy of U-Boot:

2018-01-09_18:57:51.22836          4  INFO: Boot flags: 00000001 power-on
2018-01-09_18:57:51.22837          4  INFO: Boot attempts: 1
2018-01-09_18:57:51.22838          4  INFO: Software resets: 0
2018-01-09_18:57:51.22838          4  INFO: Watchdog timeouts: 0
2018-01-09_18:57:51.22839          4  INFO: Times started since boot: 1
2018-01-09_18:57:51.22839          4  INFO: Abnormal terminations since boot: 0
2018-01-09_18:57:51.22840          4  INFO: Last termination exit code: 0

The boot flags tell the system why it is booting. Was this a normal power-on, sw-reset, or watchdog reset? It also keeps a running counter. Helpful to see if the system is stuck in a boot loop.

We then get some version information, serial number, and some microprocessor fuse info:

2018-01-09_18:57:51.22841          4  INFO: OS version 1.3.1-12
2018-01-09_18:57:51.22841          4  INFO: Application version e65b5ee4 internal debug
2018-01-09_18:57:51.22842          4  INFO: libuv version 1.15.0
2018-01-09_18:57:51.22843          4  INFO: ck version 0.5.2
2018-01-09_18:57:51.22843          4  INFO: libcurl version 7.54.0
2018-01-09_18:57:51.22844          4  INFO: ssl version GnuTLS/3.3.12
2018-01-09_18:57:51.22844          4  INFO: libwebsockets version 2.0.3 unknown-build-hash
2018-01-09_18:57:51.22845          4  INFO: Serial number: <REDACTED - DON'T PUBLISH THIS - EVER>
2018-01-09_18:57:51.22846          4  INFO: Manufacturing info: 0x00000140 0x00000000
2018-01-09_18:57:51.22846          4  INFO: Boot fuses: 0x00005060

The boot fuses are one-time-programmable settings that reside inside the microprocessor. They cannot be changed. (NOTE: Don’t publicly post your serial number. It is one of the two authentication tokens used by your machine, and both are permanently burned in fuses and cannot be changed.)

Remember the glowforge.conf file I mentioned earlier? This is what it sets:

2018-01-09_18:57:51.22847          4  INFO: Server URL: https://app.glowforge.com
2018-01-09_18:57:51.24892          4  INFO: Status service URL: wss://status.glowforge.com
2018-01-09_18:57:51.24895          4  INFO: Server public key: QtYJR25yugWevrRMRBgg5+zE+ubxSSwwCTnx+m38yUo=
2018-01-09_18:57:51.24896          4  INFO: Server public key: 3Lq2nVYO5DxKPlJQAFE4BMZY+BQKWcBoAzZTxllWsG8=
2018-01-09_18:57:51.24896          4  INFO: Server public key: cJ7oDkzjLl7vOEyuAqXIlNwvht015vXyfGbU6nJIqFk=

Next up, we have the air filter fan settings (obviously, not doing much as it’s not likely this user actually has an air filter yet):

2018-01-09_18:57:51.24897         36 DEBUG: air_filter_exhaust_fan: setting to 1000 ms
2018-01-09_18:57:51.24898         36 DEBUG: air_filter_intake_fan: setting to 1000 ms
2018-01-09_18:57:51.24898         36 DEBUG: air_filter_power_supply_unit_fan: setting to 1000 ms
2018-01-09_18:57:51.24899         36 DEBUG: air_filter_intake_fan: setting to 0 ms
2018-01-09_18:57:51.24899         36 DEBUG: air_filter_exhaust_fan: setting to 0 ms
2018-01-09_18:57:51.24900         36 DEBUG: air_filter_power_supply_unit_fan: setting to 0 ms

This block is logging the setup of the (currently unused) accelerometers and sensor logging intervals:

2018-01-09_18:57:51.25574         36 DEBUG: interconnect_temp_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.25574         36 DEBUG: board_accel_period: setting to 500 ms
2018-01-09_18:57:51.25575         36 DEBUG: board_accel_x_axis: setting to 0
2018-01-09_18:57:51.25575         38 DEBUG: board_accel_y_axis: setting to 0
2018-01-09_18:57:51.25576         40 DEBUG: board_accel_z_axis: setting to 0
2018-01-09_18:57:51.25576         42 DEBUG: board_accel_duration: setting to 5
2018-01-09_18:57:51.25577         43 DEBUG: board_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.25577         43 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.25578         43 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.25578         44 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.25579         44 DEBUG: board_temp_period: setting to 5000 ms
2018-01-09_18:57:51.25579         44 DEBUG: lid_accel_duration: setting to 5
2018-01-09_18:57:51.26273         45 DEBUG: head_accel_period: setting to 500 ms
2018-01-09_18:57:51.26276         45 DEBUG: head_accel_z_axis: setting to 0
2018-01-09_18:57:51.26277         46 DEBUG: head_accel_x_axis: setting to 0
2018-01-09_18:57:51.26278         48 DEBUG: head_accel_y_axis: setting to 0
2018-01-09_18:57:51.26278         50 DEBUG: lid_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.26279         50 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.26279         50 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.26280         50 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.26280         50 DEBUG: board_temp_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.26281         50 DEBUG: lid_accel_period: setting to 500 ms
2018-01-09_18:57:51.26281         50 DEBUG: head_accel_duration: setting to 5
2018-01-09_18:57:51.26282         51 DEBUG: interconnect_temp_period: setting to 5000 ms
2018-01-09_18:57:51.26282         51 DEBUG: head_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.26283         51 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.26283         72 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.26284         72 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.26284         73 DEBUG: head_temp_period: setting to 5000 ms
2018-01-09_18:57:51.26285         73 DEBUG: lid_temp_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.27874         73 DEBUG: lid_temp_period: setting to 5000 ms
2018-01-09_18:57:51.27878         73 DEBUG: head_temp_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.27878         73 DEBUG: lid_accel_x_axis: setting to 0
2018-01-09_18:57:51.27879         77 DEBUG: lid_accel_y_axis: setting to 0
2018-01-09_18:57:51.27879         77 DEBUG: lid_accel_z_axis: setting to 0
2018-01-09_18:57:51.27880         79  INFO: hw: initialized
2018-01-09_18:57:51.27881         80  INFO: sensor: started (TID=628)

The unused audio system bitching about not finding audio files:

2018-01-09_18:57:51.27881         95  INFO: audio_peripheral: Unable to load sound file /glowforge/sound/boot
2018-01-09_18:57:51.27882         95  INFO: audio_peripheral: Unable to load sound file /glowforge/sound/print_complete
2018-01-09_18:57:51.27882         95  INFO: audio_peripheral: Unable to load sound file /glowforge/sound/print_interrupted

Communications with the laser head are next:

2018-01-09_18:57:51.27883        101 DEBUG: head connected: ID=0x4c, generation=0x04
2018-01-09_18:57:51.27883        101 DEBUG: beam_detect_irq: setting to 0
2018-01-09_18:57:51.27884        101 ERROR: i2c_transfer: ioctl failed (9: Bad file descriptor, src/i2c.cpp:26)

The ‘Hardware Finite State Machine’ makes its first appearance:

2018-01-09_18:57:51.27884        102 DEBUG: HWFSM: event INIT handled by state initial
2018-01-09_18:57:51.27885        103  INFO: doors closed

The HSFM is the master controller for all device CNC operations.

Onto some more sensor initialization:

2018-01-09_18:57:51.27885        103 DEBUG: intake_fan: setting to 250 ms
2018-01-09_18:57:51.28712        103 DEBUG: exhaust_fan: setting to 250 ms
2018-01-09_18:57:51.31539        160  INFO: head initialized
2018-01-09_18:57:51.32048        161 DEBUG: air_assist: setting to 250 ms
2018-01-09_18:57:51.32050        162 DEBUG: uv_led: setting to 0
2018-01-09_18:57:51.32051        164 DEBUG: white_led: setting to 0
2018-01-09_18:57:51.32635        166 DEBUG: z_mode_enable: setting to 1
2018-01-09_18:57:51.32637        167  INFO: Z axis: set half step mode
2018-01-09_18:57:51.32638        167 DEBUG: lambda_t: setting to 6553
2018-01-09_18:57:51.32638        168 DEBUG: lambda_k: setting to 1966
2018-01-09_18:57:51.32639        169 DEBUG: purge_air_output: setting to 1
2018-01-09_18:57:51.32640        170 DEBUG: purge_air_period_source: setting to 1000 ms
2018-01-09_18:57:51.32640        170 DEBUG: z_stepper_enable: setting to 0
2018-01-09_18:57:51.33095        171 DEBUG: z_stepper_current: setting to 1
2018-01-09_18:57:51.33097        172 DEBUG: theta_t: setting to 40
2018-01-09_18:57:51.33098        173 DEBUG: purge_air_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.33099        173 DEBUG: theta_r: setting to 32
2018-01-09_18:57:51.33099        174 DEBUG: air_assist_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.33100        174 DEBUG: beam_detect_irq: setting to 0
2018-01-09_18:57:51.33100        174 DEBUG: e_t: setting to 96
2018-01-09_18:57:51.33101        175 DEBUG: air_assist_pwm: setting to 204
2018-01-09_18:57:51.34688        177 DEBUG: power_temp_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.34690        177 DEBUG: cpu_temp_period: setting to 5000 ms
2018-01-09_18:57:51.34691        177 DEBUG: intake_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.34691        178 DEBUG: cpu_temp_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.34692        178 DEBUG: hw_supply_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.34693        178 DEBUG: power_temp_period: setting to 5000 ms
2018-01-09_18:57:51.34693        178 DEBUG: exhaust_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.34694        178 DEBUG: ir_sensors_data_logging_interval: setting to 0 ms

The lamba_t, lamba_k, theta_t, theta_r, e_t settings are related to the beam sensor in the head, and control the IR sensor’s amplifier.

Time to clear out any pulse data (commonly referred to in the official forums as ‘waveforms’), and set the position as X:0 Y:0 Z:0.

2018-01-09_18:57:51.34694        178  INFO: hw: clearing pulse data
2018-01-09_18:57:51.34695        178  INFO: hw: clearing position

More HWFSM operations, continuing the hardware initialization.

2018-01-09_18:57:51.34695        179 DEBUG: HWFSM: event ENTRY handled by state initializing_subsystems
2018-01-09_18:57:51.34696        179  INFO: coolant: initialized
2018-01-09_18:57:51.34696        179  INFO: hw: started (TID=629)
2018-01-09_18:57:51.34697        179 DEBUG: HWFSM: event PROCEED handled by state initializing_subsystems
2018-01-09_18:57:51.34697        179 DEBUG: HWFSM: event EXIT handled by state initializing_subsystems
2018-01-09_18:57:51.34698        179 DEBUG: HWFSM: initializing_subsystems => waiting_for_hardware
2018-01-09_18:57:51.36433        192 DEBUG: intake_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.36436        192 DEBUG: exhaust_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.36437        192 DEBUG: air_assist_pwm: setting to 204
2018-01-09_18:57:51.36437        202  INFO: coolant_flow_controller_peripheral: Entering pump state 2
2018-01-09_18:57:51.36438        202  INFO: coolant_flow_controller_peripheral: Pump off
2018-01-09_18:57:51.36438        202 DEBUG: coolant_temp_monitor_data_logging_interval: setting to 100 ms
2018-01-09_18:57:51.36439        203 DEBUG: coolant_temp_monitor_timer: setting to 1000 ms
2018-01-09_18:57:51.36439        203 DEBUG: coolant_temp_update_timer: setting to 100 ms
2018-01-09_18:57:51.36440        203 DEBUG: coolant_flow_controller_data_logging_interval: setting to 100 ms
2018-01-09_18:57:51.36440        203 DEBUG: flow_controller_monitor_timer: setting to 1000 ms
2018-01-09_18:57:51.36441        203 DEBUG: flow_controller_pi_timer: setting to 100 ms
2018-01-09_18:57:51.36441        203  INFO: cam: initialized
2018-01-09_18:57:51.36442        204  INFO: coolant: started (TID=631)
2018-01-09_18:57:51.36442        207  INFO: cam: initializing pipeline
2018-01-09_18:57:51.36443        207 DEBUG: air_assist_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.36443        207 DEBUG: z_stepper_current: setting to 1
2018-01-09_18:57:51.38140        210 DEBUG: beam_detect_irq: setting to 0
2018-01-09_18:57:51.38143        211 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.38144        212 DEBUG: board_accel_z_axis: setting to 0
2018-01-09_18:57:51.38144        213 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.38145        214 DEBUG: board_accel_y_axis: setting to 0
2018-01-09_18:57:51.38145        221 DEBUG: board_accel_x_axis: setting to 0
2018-01-09_18:57:51.38146        223 DEBUG: board_accel_period: setting to 500 ms
2018-01-09_18:57:51.38146        223 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.38147        224 DEBUG: board_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.42188        226 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.42191        227 DEBUG: head_accel_z_axis: setting to 0
2018-01-09_18:57:51.42192        228 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.42192        229 DEBUG: head_accel_y_axis: setting to 0
2018-01-09_18:57:51.42193        230 DEBUG: head_accel_x_axis: setting to 0
2018-01-09_18:57:51.42193        233 DEBUG: head_accel_period: setting to 500 ms
2018-01-09_18:57:51.42194        233 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.42194        233 DEBUG: head_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.42195        235 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.42195        235 DEBUG: lid_accel_z_axis: setting to 0
2018-01-09_18:57:51.42196        236 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.42196        236 DEBUG: lid_accel_y_axis: setting to 0
2018-01-09_18:57:51.42197        237 DEBUG: lid_accel_x_axis: setting to 0
2018-01-09_18:57:51.42197        238 DEBUG: lid_accel_period: setting to 500 ms
2018-01-09_18:57:51.42198        238 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.42198        238 DEBUG: lid_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.42199        239 DEBUG: HWFSM: event ENTRY handled by state waiting_for_hardware
2018-01-09_18:57:51.42199        239 DEBUG: HWFSM: event EXIT handled by state waiting_for_hardware
2018-01-09_18:57:51.43108        239 DEBUG: HWFSM: waiting_for_hardware => idle
2018-01-09_18:57:51.43111        239 DEBUG: intake_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.43111        239 DEBUG: exhaust_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.43112        239 DEBUG: air_assist_pwm: setting to 204
2018-01-09_18:57:51.43112        262 DEBUG: air_assist_data_logging_interval: setting to 1000 ms
2018-01-09_18:57:51.43113        262 DEBUG: z_stepper_current: setting to 1
2018-01-09_18:57:51.43113        268 DEBUG: beam_detect_irq: setting to 0
2018-01-09_18:57:51.43576        277 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.44045        282 DEBUG: board_accel_z_axis: setting to 0
2018-01-09_18:57:51.44736        290 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.45209        293 DEBUG: board_accel_y_axis: setting to 0
2018-01-09_18:57:51.47747        322 DEBUG: board_accel_x_axis: setting to 0
2018-01-09_18:57:51.48353        326 DEBUG: board_accel_period: setting to 500 ms
2018-01-09_18:57:51.48356        326 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.49459        328 DEBUG: board_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.49462        331 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.49462        332 DEBUG: head_accel_z_axis: setting to 0
2018-01-09_18:57:51.49463        333 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.49464        334 DEBUG: head_accel_y_axis: setting to 0
2018-01-09_18:57:51.49464        336 DEBUG: head_accel_x_axis: setting to 0
2018-01-09_18:57:51.49465        337 DEBUG: head_accel_period: setting to 500 ms
2018-01-09_18:57:51.49465        338 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.49466        338 DEBUG: head_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.50689        343 DEBUG: accel_fifo_mode: setting to 0
2018-01-09_18:57:51.52163        362 DEBUG: lid_accel_z_axis: setting to 0
2018-01-09_18:57:51.52166        363 DEBUG: accel_fifo_enable: setting to 0
2018-01-09_18:57:51.52167        363 DEBUG: lid_accel_y_axis: setting to 0
2018-01-09_18:57:51.52167        364 DEBUG: lid_accel_x_axis: setting to 0
2018-01-09_18:57:51.52623        367 DEBUG: lid_accel_period: setting to 500 ms
2018-01-09_18:57:51.52626        367 DEBUG: accel_decimator: setting to 0
2018-01-09_18:57:51.52626        367 DEBUG: lid_accel_data_logging_interval: setting to 0 ms
2018-01-09_18:57:51.52627        368 DEBUG: hw: writing to /sys/glowforge/cnc/stop
2018-01-09_18:57:51.52627        368  INFO: hw: clearing pulse data
2018-01-09_18:57:51.52628        368  INFO: hw: clearing position
2018-01-09_18:57:51.52628        369 DEBUG: hw: writing 1 to /sys/glowforge/cnc/laser_latch
2018-01-09_18:57:51.52629        369 DEBUG: HWFSM: event ENTRY handled by state idle
2018-01-09_18:57:51.52629        369 DEBUG: HWFSM: event PROCEED handled by state idle

Finally resulting in the HWFSM reaching the IDLE state, followed by initializing the camera.

Now, we connect to the cloud:

2018-01-09_18:57:53.43024       2211  INFO: net: initialized
2018-01-09_18:57:53.43027       2273  INFO: stats: started (TID=646)
2018-01-09_18:57:53.45352       2298  INFO: net: started (TID=620)
2018-01-09_18:57:53.46315       2300 DEBUG: hw: /dev/watchdog opened, timeout is 60 sec
2018-01-09_18:57:53.46318       2300  INFO: audio_peripheral: Unable to play sound /glowforge/sound/boot
2018-01-09_18:57:53.46319       2300  INFO: net: requesting socket token
2018-02-27_23:42:58.66453       8016  INFO: socket token request:  http_code=200, result=0 (OK)
2018-02-27_23:42:58.67891       8019  INFO: WebSocketClient: connecting to wss://status.glowforge.com:443...
2018-02-27_23:42:59.07524       8427  INFO: WebSocketClient: connection established
2018-02-27_23:42:59.08046       8427  INFO: net: connected
2018-02-27_23:42:59.08049       8429 DEBUG: net: websocket interface has address 10.0.0.4
2018-02-27_23:42:59.16016       8512  INFO: update machine status: url=https://app.glowforge.com/api/machines/status http_code=200, result=0 (OK)

The cloud asks for the device’s settings (I’ll detail the contents of the machine to cloud communications in another post):

2018-02-27_23:42:59.46446       8816  INFO: settings [10152211]: state=ready

When the cloud is satisfied with the contents of the settings, it commands the device to start the “HUNT” cycle.

Next up:

The HUNT cycle, and the rest of the homing process…

6 Likes

Actually I missed that. Thanks for the link!

I previously thought beam detect was a binary thing but with all those parameters perhaps it can actually measure the beam intensity. I assume it looks at scatter from the mirror rather than a direct hit from the beam?

I think it is. The parameters may just be used to set thresholds.

That, and some scatter from the incoming window, mix it all together and bounce around inside the housing? The inside area, while not shown as such in my drawing, is not anodized and remains reflective. The sensor looks through the hole inside the red oval:

On the PCB in the head, the sensor is the silver guy in the middle in the middle of photo:

It doesn’t have a visible part number, but it looks like a standard IR detector.

It’s fed into an Intersil ISL28635 Programmable Gain Instrument Amplifier.

4 Likes