HobbyKing.com New Products Flash Sale
Jack Crossfire's blog
Posted by Jack Crossfire | Nov 08, 2013 @ 12:11 AM | 3,639 Views
These were the rage in 2005, when LEDs 1st became powerful enough to provide useful camera illumination. People started thinking of uses for a ring of light around a lens. 3 years of collecting $1 flashlights resulted in this. It rapidly gets more expensive to make the LED density higher.

...Continue Reading
Posted by Jack Crossfire | Nov 06, 2013 @ 04:20 PM | 5,127 Views

Finally got floating point to work on the stm32F4. The PX4 source code had the 1st compiler flags anyone revealed that worked & they found the only toolchain that worked. The key flags are

-O2 -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard

The -fno-builtin flag has to be omitted, since some floating point operations use builtin functions.

The next step is getting the right math & gcc libraries, since the floating point functions depend on those. The libraries are different for each set of compiler flags, so PX4 gets the compiler to print the right libraries by running the compiler with full optimization flags & 2 hidden compiler commands:


After that, the linking used the same flags as without floating point:

-ffreestanding -nostdlib -nostdinc

with the fixed paths to libm & libgcc gotten from the hidden compiler commands. The executable is double the size.

More key points: the math library from the compiler directory has to be included. The following nugget has to be run in the bootloader before the program that links the math library is run:

static inline uint32_t getcontrol(void)
  uint32_t control;
  __asm__ __volatile__
     "\tmrs  %0, control\n"
     : "=r" (control)
     : "memory");

  return control;

static inline void setcontrol(uint32_t control)
  __asm__ __
...Continue Reading
Posted by Jack Crossfire | Nov 05, 2013 @ 10:48 PM | 2,413 Views

Finally cracked open a gearbox toy from allelectronics.com. It seems to be an east european toy.

It has exactly 2 gear ratios supplied by 2 sets of gears. 1:288 & 1:60

...Continue Reading
Posted by Jack Crossfire | Nov 05, 2013 @ 02:02 AM | 2,446 Views
After a 6 year run, decided to let vicacopter.com expire. It'll be quickly taken by a squatter who will charge $80 million for it. Thus also ends any dealings with godaddy.com. That site was annoying & painful.

Domain names get expensive, over time. vicacopter.com added up to over $70 after 6 years. godaddy.com doubled the renewal price. Heroinewarrior.com has taken $156 over 13 years, but its price remaned constant. Unless you have a business, it's not worth it. The hobby domain names are now mostly owned by the generation which turned 20 when the internet just got started.

Posted by Jack Crossfire | Nov 03, 2013 @ 05:30 PM | 2,385 Views

It came across as a desperate bid to get money flowing into a business that was languishing in an era of no technology investment. Someone in a corner office finally said they needed money, so they staged a publicity campaign.

There's no logic to it. Airplanes don't need pilots anymore. There's no need for a plane to go fast without a pilot. It's a showpiece from an age when bragging rights mattered. Every spy plane development for the last 10 years has been smaller & slower. Insects are the future. Even then, all technology investment is in Asia.

They had some concept studies going on since 2006, but never received any funding for it. They had a time table that stretched to 2030 to finish it. They never said it could fly into space, though the media assumed it could. At mach 6, it could make a parabolic coast to the 120,000 ft range but it could never get to 328,000ft where space begins.

They brushed aside the problem of thrust. The turbine engine only goes up to mach 2.5. The scramjet only goes down to mach 4. They said it involved a black box that transforms from a turbojet to a ramjet to a scramjet. It would involve opening & closing various inlets & wank words.

Getting turbine engines to their current state took decades of trial & error. There is no algorithm to produce the optimum turbine engine. Someone thinks of a change to a compressor blade, simulates it, but the simulator can't dream up the change....Continue Reading
Posted by Jack Crossfire | Nov 02, 2013 @ 07:28 PM | 2,720 Views

After much tweeking, the XBee internet connection came in at around 32000 bits down & 6400 bits up. The upload packet rate maxed out at 44 Hz with the bandwidth weighted 5x towards downloading & 1x towards uploading. That was done by using 100 byte packets for downloading & 20 byte packets for uploading. Sending multiple download packets in between a slower rate of upload packets didn't work.

The browsing experience was pretty bad. Some pages with automatic refresh timers didn't load at all. It's interesting to compare how efficiently different pages load on a very slow radio. Facebook is very efficient. wunderground never loads.

The internet may seem extremely slow & bloated, but all that javascript & CSS modularization is probably more efficient than years ago. They're feeling pressure to optimize the page loading on phones.

Unfortunately, the XBee range was exactly the same as wifi. It would take either a repeater or a waveguide antenna. If the range was solved, the next step would be a system of ACKs that could handle dropped packets a lot more quickly than TCP.

The mane limitation with radios is they need a fast way to resend dropped packets. TCP is very slow to recover from dropped packets.
Posted by Jack Crossfire | Nov 01, 2013 @ 05:18 AM | 2,715 Views

Give a monkey a bag of cheap radio modules & he'll do anything to convert them into a long range internet connection. Wifi isn't really wireless because the range is useless. The phone company is worthless because no-one can afford $1000/year for bandwidth capped data.

Every man dreams of hooking up 4 cheap radio modules into a high speed, long range, full duplex radio suitable for IP. IP requires full duplex asynchronous communication. Hook up your PPP connection to a single XBee & it won't go anywhere.

The CC1101 was free & transmitted 10mW, much less than the XBee, but a lot more power than the MRF49XA, so whacking 4 on 2 serial ports to make a full duplex connection was expected to work. It wasn't so easy.

The frequencies of the 2 modules were too close together & their tuning filters weren't sharp enough. The transmitter overwhelmed the receiver. Since they have a common electrical connection through either the serial port, ground, or Vdd, they can never be spaced far enough apart.

1 module needed to do 433Mhz while another did 915Mhz to avoid interfering. The modules were wired only for 433Mhz, so you needed to rip out the balun parts & put in a 915Mhz loop antenna.

The CC1101 was an absolute buster to program. There are fragments of useful register sets on the goog. The only required register writes ended up being:

WRITE_REG CC1101_MDMCFG4, 0x8C ; filter bandwidth
...Continue Reading
Posted by Jack Crossfire | Oct 23, 2013 @ 11:58 PM | 3,322 Views

Looking over the exams for the MIT algorithms course on the recommended video feed is pretty intimidating. Each problem is as substantial as a research paper. It seems hopeless to ever finish all the problems in the allotted time, but most everyone employed in the software business nowadays had to pass the same course & take the same tests. It's the same test at MIT as the lowliest Cal state university.

They all have to master the asymptotic analysis, all the sorting algorithms, all the proofs. Proofs were always a great challenge. Doing asymptotic analysis in the required time requires memorizing the patterns & formulas, memorizing the differences between T(), O(), theta() & omega(). MIT requires it for all students, but others only require it for CS.

Nowadays, there's a wealth of previous exams & alternative descriptions of the material. 20 years ago, there was no wikipedia, google, or goo tube. We just had the lectures & our textbooks. It was almost cheating to have a previous exam. Professors have probably compensated by making the problems harder.

It helps to remember the same amount of work is involved in most any bachelor's degree & you already did that amount of work. Over time, you get used to learning 3 new concepts every 2 days, a white board covered in mathematical notation, sustaining that intensity for 14 weeks at a time. The number of hours of...Continue Reading
Posted by Jack Crossfire | Oct 23, 2013 @ 12:49 AM | 3,369 Views
Wifi Cam Returns (3 min 10 sec)

With bluetooth replacing wifi for connectivity needs, decided to recycle a retired flight computer into a simple wifi cam. It took a long time to get the wifi software to work, years ago, so it was worth having some kind of demo of it. It goes from 3fps of 640x480 color to 14fps of 320x240 greyscale. It consumes 0.3A at 5V.

It's a complete waste, as commercial wifi cams go. A modern gopro can stream higher quality video at 30fps. There are many hardware video compressors which could do the job in less space. Economically, it's still probably the cheapest thing which can get some kind of moving pictures to a phone.

It was supposed to be the cheapest, smallest circuit, suitable for fitting on a monocopter & transmitting to a baseline phone without any external adapters. The flight software, video compression & communication would all be run on a single chip.
Posted by Jack Crossfire | Oct 21, 2013 @ 07:51 PM | 2,841 Views
Was surprised to find someone was still studying bias cancellation in gyros. Only Analog Devices still produces bias cancelling gyros & they only produce a handful. The world has migrated to super cheap, high bias gyros because position sensing has gotten good enough to compensate for bad gyro sensing.

They're still selling the original analog, single axis gyros at the original price, but have been selling a digital version in an easily soldered SOIC package. They still advertize an extremely low 16 deg drift over an hour for the digital version. It still costs 10x the Invensense version. For a GPS denied environment with real bad position sensing, it might be worth it.

If you have a real high resolution optical flow system that updates really slowly because of processing power, there might be a benefit to using the accelerometer data to get short term updates.

Went over more of the Arducopter source code. They call the fusion of position sensing with accerometer data "inertial navigation." It's in AP_InertialNav.cpp. It seems to add earth frame acceleration data to historic GPS data through a convoluted system of weights & delay lines. Its advantage relies on GPS having a 400ms lag.

_position_correction & _position_error are the key variables. _position_correction is updated when the accelerometer is updated. _position_error is updated when the GPS is updated. They both feed back into each other. The earth frame...Continue Reading
Posted by Jack Crossfire | Oct 19, 2013 @ 09:29 PM | 4,667 Views

CastAR VR / AR System - The 18 Month Story (18 min 57 sec)

Google recommended this video. Long ago after she disappeared from Goo Tube, there was a story about her getting sh*tcanned from a startup that was doing this ridiculously complicated VR project & now she was trying to sell it alone. It sounded like they hired her to do this idea which they thought of, then she got attached to it, but in actuality it was her idea all along.

There must have been a huge ergonomical benefit to using head mounted projectors, a head mounted webcam, retro reflective material, IR leds, active shutter lenses. The only obvious advantage is including practical objects in the VR world.

Detecting head position is a huge win for VR glasses. It's hard to see why no-one has done it. It's very hard to track the position of an indoor object, but VR glasses aren't constrained by the requirements of a flying vehicle. The ambient lighting can be controlled. The update rate doesn't have to be fast.

She does it with a glasses mounted camera detecting ground based LEDs. It would have been much easier to use a ground based camera tracking glasses mounted LEDs. The problem no-one can solve is convergence detection.

She doesn't seem to have a final product in mind, just endlessly trying to reduce the size, but something really complicated with no obvious goal is the kind of thing that makes money from the crowd. She conceded that the reflective material is too...Continue Reading
Posted by Jack Crossfire | Oct 18, 2013 @ 07:46 PM | 3,165 Views
Getting digital audio from the CP33 was extremely hard & pushed the limit of the available parts. It's still extremely hard to capture 2.8 megabits of loose data in a general purpose microcontroller. Ideally, it would be done with an FPGA. There's no regret in taking 4 years to do it. It couldn't have been done without an oscilloscope.

Once you solder the wrapping wire in the tight confines of the piano & get the bits streaming out USB, it's definitely worth it. The sound from the digital intermediate is amazing.

The CP33 outputs very hissy analog, but internally uses 24 bit 44.1khz. The internal signal is not adjusted based on volume, so the amplifier stage takes an extremely faint signal from the DAC for all volume levels.

Yamaha CP33 digital output (0 min 57 sec)

The digital intermediate contains the entire decay of each note all the way down to 0, with no hissing & barely any quantization noise. There is only a very slight hissing when the envelope is still loud enough to amplify the hissing of the original microphone. The digital output contains harmonics from the original CF-III not audible in the analog output.

It's a shame so many electronic instruments over the last 40 years were professionally recorded from their horrible analog outputs when a pristine digital intermediate was always available, inside the wiring. There was never an easy way to get at the digital intermediate.

There was no optical output or...Continue Reading
Posted by Jack Crossfire | Oct 16, 2013 @ 10:19 PM | 3,726 Views
Finally discovered the CP33 can be plugged into USB & recorded with arecordmidi. The result can by played back through the CP33's synthesizer using aplaymidi. Should have gotten around to that, 4 years ago.

After many days of banging on Cubase, Ivory, Virtualbox, alsa-utils, & waiting for Adsense prerolls, finally got the CP33 output to feed through a German Steinway synthesizer. Audio doesn't work on VirtualBox, so everything has to be rendered. Cubase crashes a lot.

Unfortunately, Ivory truncates the notes to 1.4 seconds, pedaling or no pedaling. This might be a problem with the pirated version, the virtual machine, or an obscure Cubase setting. The Mystic synthesizer in Cubase doesn't have the truncation problem.

There might be another piano synthesizer, but the only problem with the CP33 sound is the extreme hissing. It's otherwise a better sound than Ivory. The Ivory sound is more out of tune & uneven. It might just bring out finer detail in the velocity. The problems are masked by ambiance & EQ. People like Ivory because of the realism, not because of how ideal the sound is.

The CP33 sound now has a lot of history to it. It's the sound of the Jesus Heroine's era. There's a lot of motivation to keep it instead of changing to a Steinway.

Ivory is everywhere & nowhere. There are no recordings of complete performances, no documented problems with it, no documented presets for it. The default settings are...Continue Reading
Posted by Jack Crossfire | Oct 15, 2013 @ 10:44 PM | 3,487 Views
Asus sent an external GPS module for their obsolete broken tablet, so it was time to feel sorry for whoever spent a lot of time designing this & whoever was desperately waiting for the GPS module.

Lawyers have gotten good enough that those kinds of defects now get you sued. The GPS & camera didn't work. The wifi was inferior. Asus designed an external GPS module as compensation, since they couldn't afford to give everyone a new tablet that fixed everything.

...Continue Reading
Posted by Jack Crossfire | Oct 13, 2013 @ 06:12 AM | 3,260 Views
For a good time, go to:


Pretty intimidating material. Only watched lecture 4 & it started out understandable, but when he got to analyzing complexity, it fried my brain.

Before 2010, job interviews emphasized experience. Show us what you've done & demos. There was very little theory.

After 2010, job interviews resembled lecture 4 a lot more. Show us the complexity of an algorithm. Optimize a sorting algorithm without the aid of the computer or Goog searches that you would have in the actual job. They wanted a lot more theoretical knowledge & there was little value to experience.

Clearly, the people getting jobs had mastered the very intimidating material. Everyone who founded a startup that got bought out & made them rich had mastered the theoretical material.

1 problem is they've been overwhelmed with applicants since 2010 & have to resort to very difficult interview questions that represent nothing about the job, just to weed through the noise. The other problem is technology has gotten a lot more algorithm focused, after 2010.

Most people in the workforce now are designing algorithms that analyze massive amounts of data, intelligently determine what advertizement to show, intelligently determine what newsfeed items to show, intelligently plan a route for car navigation, intelligently drive a car, develop intelligent responses for a program like Siri.

There's a lot less pushing of 1...Continue Reading
Posted by Jack Crossfire | Oct 11, 2013 @ 08:07 PM | 3,433 Views

It was a long week of stackoverflow searches, IntentServices, AudioRecorders, AudioTracks, AlertDialogs, & Eclipse configuration. For all the emphasis on higher level languages, every new software framework takes more steps to accomplish less.

1 problem is no-one can ever memorize every high level function. In a low level language, there was a small number of functions which you could remember & build up into a high level function that documented itself. Now that a program is made of thousands of unique, high level functions, every line of code is a black box which requires a long Google search to find the meaning of.

There was a time when using a library meant -I, -L, -l flags. All the errors used to be on 1 console. Now, it takes pages & pages of obscure Eclipse configuration windows, Java runtime compliance settings, using the dex2jar utility, then jar to view the contents of the output, sorting out the multiple streams of errors from console, problems, & logcat.

Google has gone through a few iterations & still hasn't figured out how libraries should be compiled. Now, they only compile the src directory. Every user of the library has to recompile the gen directory. So some bits of the library go in the library & some bits go into the mane program. The automatic mechanism of compilation never works. You can't view all the configuration windows of 2 projects side by side. So far, it's taken manually copying the project....Continue Reading
Posted by Jack Crossfire | Oct 11, 2013 @ 03:42 PM | 3,413 Views

NASA was obviously done when the Constellation program was canceled. They might have been done when the shuttle was canceled, but no other program was ever going to be justifiable once the clear goal of putting a human on the moon was taken out.

Old timers can still remember an age when they were putting 28 humans per year in space, launching 1 million pounds of shuttles per year. They're never going to launch a vehicle of their own again. The idea of another large rocket came from congress, but the buck stopped with Obama, who wanted no more vehicles & NASA to focus on just pension plans. In the fullness of time, congress never funded what they wanted & the pension plan agency is what they got.
Posted by Jack Crossfire | Oct 09, 2013 @ 08:16 PM | 3,417 Views
Finally got around to uploading the Android apps & Linux utilities which have accumulated over the years. Manely, the microphone monitoring app & the CPU Usage app are necessary for survival on Android.


A lot of small utilities build up over a lifetime of programming. Some of them were for technologies that no longer exist, like a utility for recovering files from a damaged CD-R or a utility for viewing analog TV.

For a long time, the Goog was good at buying out every startup & providing every utility you could possibly need. There weren't a lot of functions a phone could possibly do, which the Goog didn't already provide in the giant settings menu for everyone in the world. We were all equal.

That's started ending, as they've become more profit driven & the mane driver of innovation, Steve Jobless hasn't been around. Maps no longer allow offline viewing. The Play store charges $25 to start uploading. Adsense is no longer pure text or diffused banners, but giant bright red banners filling the entire window & making apps look horrible. It might be the return to the age when writing a program could give you power that no-one else had.

It's definitely a return to the age of not having any money. When you don't have any money, pure software & game programming gets a lot more attractive than robotics & UAV's.
Posted by Jack Crossfire | Oct 09, 2013 @ 04:00 AM | 3,313 Views

Caved in & ran the 14.8 miles to watch Gravity in IMAX 3D. It wasn't very realistic, the characters had a hard time staying focused, but it kept moving. There's a definite trend of this generation losing focus in their writing & movies.

It was almost entirely computer animated.

The computer animation was a lot better than a few years ago. The leap in triangle count & resolution of motion capture is definitely showing. Didn't notice the 3D after a while. It probably did contribute to the immersion, because after the movie, running home looked fake.

Obviously, the ISS, hubble, & chinese space station can't be traversed in a space suit or a Soyuz capsule. The internet squeemed over that one.
Posted by Jack Crossfire | Oct 08, 2013 @ 06:03 AM | 3,097 Views
So the microphone monitoring crisis evolved into a simple app which shows the microphone level. You can view it during a phone call to know if the microphone is working.

It can optionally feed the microphone to the speaker & add simple reverb. As usual for a JAVA SDK, compatibility with every version of Android on every phone is a hideous mess.

The minimum playback buffer reported is not always a multiple of the recording buffer, which requires recording 2 full buffers before playback can begin, creating an unnecessary delay. Sometimes it can be forced to use a smaller playback buffer than the reported size, but not consistently enough. None of the sizes are powers of 2, but strange numbers like 3712, 7526.

The free ride with Goog now ends at the Play store. It costs $25 initially to upload anything on the Play store. The Goog has so far not required an annual fee. Their history of making paid services free makes one reluctant to pay up.

Every programming job nowadays requires you to have something on the Play store, so it's caused lots & lots & lots of guys to pay the fee & upload millions of apps.

There are many microphone monitoring apps that look a lot better & have a lot more features, but none with useful level meters. Adding some more effects, a useless graphic EQ, & different options for the microphone routing would make it competitive, but it's a road of useless features for popularity.

The world just needs a microphone monitor for verifying the microphone is working. There are also microphone oscilloscopes which would have done the job.