Measuring temperature in a PC should be easy: after all, most mainboards have extensive monitoring capabilities for temperature and voltage levels built-in. Unfortunately, very few of these facilities are documented properly, and software support is lacking. Instead of trying to navigate the maze that is lm-sensors (which isn’t even available for FreeBSD), I decided to look for some USB-based solution.
There’s a reasonably cheap chinese USB thermometer called TEMPer. I got mine from Brando for 12 Euros. It’s a USB-to-serial chip from WinChipHead. It’s DTR, RTS, and CTS lines are used to connect a LM75 I²C temperature sensor. To talk to the LM75, you need some bit-banging driver.
I’ve put together a command line utility for the TEMPer that can program the built-in thermostat (TEMPer has a LED connected to that output) and print out temperature measurement data. It does it’s job, and might serve as an example on how to do I²C over a simple interface.
Posted by stb at 21:45 on January 1st, 2010.
Categories: Linux, freebsd, hardware. Tags: hardware, iic, lm75, source code, usb.
When connecting via a Huawai E169 UTMS USB stick through O2 Germany’s network, the data stick or the network suggests a PPP IPCP remote address of 0.0.0.0. FreeBSD refuses to ifconfig the tun interface with this endpoint address.
Fortunately, ppp(8) offers a configuration parameter to influence the IP addresses negotiated with the peer (ifaddr), and suggesting a different address will make the configuration work.
If you get this log output from ppp, you need to configure address selection:
IPCP: deflink: RecvConfigAck(4) state = Req-Sent
IPCP: IPADDR[6] 10.68.235.57
IPCP: PRIDNS[6] 193.189.244.197
IPCP: SECDNS[6] 193.189.244.205
IPCP: deflink: State change Req-Sent --> Ack-Rcvd
IPCP: deflink: RecvConfigReq(47) state = Ack-Rcvd
IPCP: [EMPTY]
IPCP: deflink: SendConfigAck(47) state = Ack-Rcvd
IPCP: [EMPTY]
IPCP: deflink: State change Ack-Rcvd --> Opened
IPCP: deflink: LayerUp.
IPCP: myaddr 10.68.235.57 hisaddr = 0.0.0.0
Warning: iface add: ioctl(SIOCAIFADDR, 10.68.235.57 -> 0.0.0.0): Destination address required
Error: ipcp_InterfaceUp: unable to set ip address
Here’s my complete ppp.conf, with the ifaddr line included:
u3g:
set device /dev/cuaU0.0
set speed 115200
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0
set authname internet
set authkey internet
set log local phase ipcp
set dial "ABORT BUSY TIMEOUT 2 \
\"\" \
AT OK-AT-OK \
AT+CFUN=1 OK-AT-OK \
AT+CMEE=2 OK-AT-OK \
AT+CSQ OK \
AT+CGDCONT=1,\\\"IP\\\",\\\"internet\\\" OK \
AT+CGACT? OK-AT-OK \
AT+CGATT? OK \
AT+CGCLASS? OK \
AT+COPS? OK \
ATD*99***1# CONNECT"
set crtscts on
nat enable yes
add default HISADDR
disable dns
This applies to both 7-stable and 8-stable (with both the old and the new USB stacks). I’ve used u3g(4) on both occasions. The original ppp.conf for 3G modems is based off this one from Nick Hibma.
This is how it looks like when using ifaddr:
IPCP: PRIDNS[6] 10.11.12.13
IPCP: SECDNS[6] 10.11.12.14
IPCP: PRINBNS[6] 10.11.12.13
IPCP: MS NBNS req 130 - NAK??
IPCP: SECNBNS[6] 10.11.12.14
IPCP: MS NBNS req 132 - NAK??
IPCP: deflink: SendConfigReq(2) state = Req-Sent
IPCP: IPADDR[6] 10.0.0.1
IPCP: COMPPROTO[6] 16 VJ slots with slot compression
IPCP: deflink: RecvConfigReq(50) state = Req-Sent
IPCP: [EMPTY]
IPCP: deflink: SendConfigNak(50) state = Req-Sent
IPCP: IPADDR[6] 10.0.0.2
IPCP: deflink: RecvConfigRej(2) state = Req-Sent
IPCP: COMPPROTO[6] 16 VJ slots with slot compression
IPCP: deflink: SendConfigReq(3) state = Req-Sent
IPCP: IPADDR[6] 10.0.0.1
IPCP: deflink: RecvConfigNak(3) state = Req-Sent
IPCP: IPADDR[6] 10.42.237.110
IPCP: IPADDR[6] changing address: 10.0.0.1 --> 10.42.237.110
IPCP: deflink: SendConfigReq(4) state = Req-Sent
IPCP: IPADDR[6] 10.42.237.110
IPCP: deflink: RecvConfigAck(4) state = Req-Sent
IPCP: IPADDR[6] 10.42.237.110
IPCP: deflink: State change Req-Sent --> Ack-Rcvd
IPCP: deflink: RecvConfigReq(51) state = Ack-Rcvd
IPCP: [EMPTY]
IPCP: deflink: SendConfigAck(51) state = Ack-Rcvd
IPCP: [EMPTY]
IPCP: deflink: State change Ack-Rcvd --> Opened
IPCP: deflink: LayerUp.
IPCP: myaddr 10.42.237.110 hisaddr = 10.0.0.2
PPP ON freebsd-current>
Posted by stb at 18:51 on August 15th, 2009.
Categories: freebsd. Tags: freebsd, ppp, umts, usb.