Ah that makes sense. I ran a line with a pullup resistor over to a 3.3V output and now I get a 3.3V pwm signal. The pwm duty cycle was inverted until I found the '!' option on the output pin. So the g-code looks like this (in case anyone else comes across this)
; setup out4 as a fan with 30khz pwm, inverted logic since I'm using a pullup resistor
M950 F4 C"!Out4" Q30000
; set pwm duty cycle on out4
M106 P4 <0-255>
Thank you for the help.