Last May, MW Turvey from LibSurvive sent me a lighthouse and I decided to see if it would
be feasible to do FDM with the existing lighthouses.
I played with it.
I got a chance to dink with it but I never really made this video because I didn't have
time.
So, I'm going to throw together a little bit of something because people have been bugging
me about it recently.
So, it's not going to be like my normal youtube videos but for those who are specifically
looking for this video, here it is.
So, MW Turvey the guy who sent this to me has already done this and he has indicated
that it is well worth my while to do this instead of shortcutting around it.
Once I was able to pull off the front of the lighthouse, I was able to interface with the
little 4-pin connector doohickey at the bottom.
And to do that there are probably right ways but I did it with some tape and .1" headers.
With the connector together, I tried putting it on the bottom of the lighthouse from the
front of the lighthouse.
That was particularly difficult and I don't recommend it for anyone.
Uuhh.
*GHASP* Oh my gosh.
Uuhh Oh.
It was close though.
Adam: *Laughter*.
Charles: Nope.
Oh, Ok.
So that was it.
There's just two grounds.
Adam: And he even says both headers on the right looking in are tied to ground.
Charles: Ok, so that was it.
Oh man, now I gotta do it again.
Black and white that should be tied.
Adam: Should have been live streaming this.
Charles: No because we don't know if we can publish it yet.
Adam: Oh dear.
Alright, don't jiggle that.
Charles: Ok, so.
Oh we have to jiggle that though.
We had a bit of a guide from Alan to help us through things but we still had a lot of
fumbling.
It is not talking.
Adam: Ok, so we had a bad connection.
Let's pull the assembly out.
Charles: Ok, we'll pull the assembly out.
I'll find some tools.
Oh wow.
Perfect.
Adam: See, am I good at judging those sizes or what?
Charles: I just don't see how this won't destroy calibration.
Adam: Because there is a metal frame that holds that holds the whole thing together.
Charles: After finding out that none of my torx sets actually fit the screws on the lighthouse
I had to do the best I could with getting the connectors in the front.
I don't know what changed, but now it's working.
Adam: Ok.
Good.
Charles: We see something coming up.
YEAAAA BUDDY!
Haha!
Hello, Lighthouse Basestation.
Hey Adam, Check it out!
Maybe the other pin isn't on.
Adam: Oh interesting.
It's adorable.
Charles: Yeah!
It's working now.
Yeah, apparently it uses the minicom standard.
So, let's run it in minicom.
Oh my gosh.
Look at how fast this thing boots.
Ok watch this.
Reboot.
Enter.
That's pretty Neat.
Wow, they were working on firmware as late as May 5th of last year.
Adam: We've gotten updates to the firmware for these things, didn't we?
Charles: Have we?
Oh yeah we have gotten firmware updates.
Ok, that's fair.
So, now there's a command I'm supposed to execute to save off the configuration.
So, the command is eprom r 0 4032.
eeprom r 0 4032.
Neat.
Woah.
Hello.
So, some of these would be out of sync with each other.
That's good.
In addition to almost every parameter being configurable surrounding the timing.
This means the frequency, the timing, the standoff, everything.
We found that there were several more modes ready to go, they just weren't reachable by
pressing the button.
Much slower, much slower.
Much, much slower.
This one looks normal.
This one is mode A, Mode B, Mode C. Mode 7.
Can't tell the difference between mode 7 and the others.
Mode 1 is faster.
Let's go make sure we can read the pulse coming off of it.
Hmm.
All I see is pulses.
I don't see any that's interesting.
Let's see what we actually see if we dump this data.
Mode4.csv.
That's interesting.
Some of these pulses are not 1.8 MHz pulses.
Or maybe they are.
Oh they are it's just flipping around.
Slave optical master sync.
Slave cable.
So now, 765053 is this one.
So that's 4.
So it says 1 on the thing and that says 4.
And it looks like we have a pretty good grouping of data.
Plus or minus about 2 khz.
So, that's pretty spectacular.
For FDM the most important thing would be to change the carrier frequency.
Conveniently it's just a parameter in the lighthouse.
Set mode 4 carrier.
*GHSAP* Yes.
Wow.
Oh wow.
How low can it go?
Let's try a 900khz carrier.
It's gotten wonky again.
It's tracking to 1.51, 1.53.
I didn't get any video of it.
Things did get wonky below about 1MHz.
Thankfully there's lots more room.
It definitely tracks to 2 MHz.
That's about 20kHz windo.
That's odd that would get worse.
I decided to record several carrier frequencies in a single data set.
And the results were rather stunning.
I'm gonna chalk that up to success today.
I even wrote a program that would go through several frequencies on the lighthouse to make
sure that there were no dead spots or problems anywhere.
Much to my surprise.
The ESP8266 lighthouse was able to see all of the signals between 1.3 and 3.2 MHz.
This is really useful because it would mean it would be trivial to identify where any
light was coming from whenever it would hit an esp8266 lighthouse receiver.
One of the other things I did was drastically reduce the length of the sync pulses.
This would allow many more lighthouses to operate in the same area.
Unfortunately I never did find a way to make the sync pulses a different frequency than
the sweep pulses, so there would still be a disambiguation problem.
Charles: Adam.
Adam: What?
Charles: I got the lighthouse out.
Adam: Yeah?
Charles: It is ridiculous.
Adam: Let me see.
I'm surprised it doesn't have a metal frame I guess plastic's not too bad.
Easier to injection mold.
That is a pretty crazy mold.
What is this?
Charles: Laser.
Adam: Oh, it shines down the bore and then there's a mirror of course.
That's a much better way to do that than anything I thought of.
Charles: What?
It takes all that to make the?
Look at how much junk is on there and that's just for a sensor.
Adam: There might be a reason.
There might be a reason you're not aware of yet.
Especially for this one.
That junk may be doing something integral to the timing.
It also may be doing something so it can ignore itself maybe.
Adam: What is up with the giant capacitors?
Charles: Giant capacitors.
Adam: For the motors?
Charles: I don't know.
There is a full-on LPC in here.
Adam: How do they sink the heat from these?
Charles: I don't see anything.
I don't know.
Adam: That's a very thin board.
I guess they don't produce that much heat.
I thought Infrared things usually do.
Charles: They do.
Adam: I like how there's a lot of junk on the other side of the board, too.
And look, there's an unpopulated square.
Charles: That's an antenna.
Adam: Bluetooth.
Charles: Yes.
That's what that processor is in there.
Adam: Ok.
That's pretty good.
Charles: Now I'm afraid to do the thing I wanted to do to it.
Adam: You wanted to take the board off?
Charles: I wanted to go try to change out one component.
Adam: Oh.
Charles: I see it in there.
Adam: I think you could probably take the bottom board off OK.
Getting it back on may be a little tricky with those flexible cables but you could do
it.
It's this frame here that holds the important bits together.
I would definitely avoid moving.
But that's not doing positioning.
It's just doing timing.
Ok.
I guess as long as it's I don't know.
Charles: All it cares about.
It only looks for snyc pulses from the other ones.
Adam: Yeah, but if it was at the corner of the thing the sync pulse would happen at a
different time relative to this than...
Charles: Sync pulse.
No the flash.
Adam: ok.
Charles: After I recorded this video, things got very busy for me, so I didn't get a chance
to develop this any further, but people continue on with libsurvive and the channel and doing
all sorts of interesting projects with it so I recommend checking it out.
And if any of you guys want to play with the ESP8266 lighthouse stuff I do have all of
the stuff up on github for it.
I really do think FDM could be a viable way to operate this.
Another reason I didn't pursue this very hard was because it seemed valve was going to very
shortly be coming out with CDM lighthouses.
FDM meaning frequency division and CDM meaning code division and I pretty quickly lost interest.
But who knows.
Maybe somebody else will be able to take this and run with it.