Computer pr0n

The LIX Pen

by on Jan.06, 2016, under 3D Printing, Hardware

loclhst

TL;DR: Cool, but meh.

Sometime in May 2014, there was a kickstarter. It was for the LIX pen. Though not the first to the market with a 3d printing handheld device, it seems to have been the first to be smaller then the rest. Very cool concept. Since I missed the 3doodler kickstarter and the v2 was not out yet, I saw this and thought I had to be a part of it.

It was successfully funded the end of May 2014, with an estimated delivery of October 2014. First thoughts are “Cool, they have a working prototype. It’ll be ready and in my hands to show off to friends by the end of the year!”  Well, that day came and went.  Delays. Lots of angry people. More delays. More angry people. Even more delays.  At least they are showing us progress.  I never got angry. I know how development can go. So I sat and waited.

The one day, Jan 4, 2016, I got an email saying my LIX pen was being shipped from the warehouse. SWEET!!!!

Today, Jan 6, 2016, I got a box. It said LIX on it.  I was overjoyed!

First impressions are good.  It looks awesome, it feels awesome, I am smiling. Oh, pictures, right.

 

IMG_20160106_191634

This is the box it came in.

IMG_20160106_183230

This is the pen.  Missing a couple
buttons (I will get to that…)

 

So, I got to playing around with it, started printing some stuff.  Slowly, but it works.

While the underside of the box lid claims time to temp under one minute, the paper quick instructions state 2 minutes.  In testing, I was able to get to temp in about 2 minutes, including power disconnections (explained in the next paragraph). Cool down is fairly quick as well, for a passive cooled device.

I had a few problems coming to this point. For starters, though the provided 1.5m custom USB cable is long, its JUST long enough to run from the floor to my desk at work, with just a tiny bit of slack. So, this leads me into my first main problem.  Anytime I pull the unit (say I lift it up to print something), the USB pulls out slightly.  This in itself is not a major problem, the problem is with the fact that the unit turns off if the USB cable is pulled out a millimeter. Luckily, I can re-seat it, turn the unit back on, and it takes a couple seconds to re-warm up again. Until it gets pulled out again.  Re-seat, power on, print, rinse, repeat.

So now I am getting the hang of it, printing blobs that are actually sticking, not pulling the USB cable. Oh, I need more plastic!  Insert the plastic per the instructions. Hrm, no more plastic coming out.  Well I can feel it getting pulled in, see it spinning, but nothing is printing. Looking up the retraction key presses, I pull out, cut, and re-feed the filament. Hrm.  Same thing.  Retract, pull out…woah…thats pretty torn up…

Filament, after pulling out of the LIX pen. Notice how torn up the end is?  That is from the feeder mechanism. It stripped the plastic and couldn’t grip.

IMG_20160106_182448

So, figuring I might have jammed up the pen, I wanted to pop it open, not only to get a look at its innards, but to see if I can clear the jam.

Well that’s nice, the tip and back unscrew and everything slides out….mostly.

So, if you open your unit, our of curiosity or necessity, I would strongly recommend holding it with the buttons down, and pulling slowly from the tip (pushing the back). If you do not, you may end up damaging the unit…like I did. Upon first opening of my LIX pen, I ended up pulling on one of the tact push buttons, breaking its upper housing. Not fun. Oh, also, be prepared to catch a few things.

The button covers may fall out, as well as a little plastic bit which presses the PTFE tubing against the plastic, which pushes the plastic against the feeder.

There was a fair bit of plastic fuzzies around the feeder, which I was able to clear up easily.

IMG_20160106_182850

I saw no clear indication of a jam, so I am wondering if the feeder just did not get a decent grab on the plastic. I have since put the pen back together, and am still having feeding or grab problems. I think I might contact LIX about this (and the tact button).

Well, since I had it apart, I decided to honor a request on kickstarter to take some up close pictures.

So, for your viewing pleasure, here are some pictures of the LIX pen. Please try to not kill my server or bandwidth the best you can with these pictures!

IMG_20160106_183230

Up close of the pen.

IMG_20160106_183217

The other side of the pen.

IMG_20160106_185413

Size in relation to a USB plug.

IMG_20160106_183343

Up close of the tip.

IMG_20160106_183256

Up close of the clip, on the back.

IMG_20160106_183357

Up close of the back with
the USB power and filament entrance.

IMG_20160106_183453

All the bits (minus button
covers and PTFE pusher)
that come apart with the pen.

IMG_20160106_185451

This is the included ABS
plastic. Black and multiple colors.

 IMG_20160106_184507

Power supply bits.

 IMG_20160106_184523  IMG_20160106_184535  IMG_20160106_184545

Input: 120-200V 50/60Hz 0.5A
Output: 5.0V 2.0A

 IMG_20160106_183536

The left button is normal, the right button is broken.

 IMG_20160106_183604  IMG_20160106_183750  IMG_20160106_183544
 IMG_20160106_183549  IMG_20160106_183553  IMG_20160106_183609  IMG_20160106_183738
IMG_20160106_183722 This small flap is the LED panel. IMG_20160106_183706 IMG_20160106_183921Up close to the feeder.
The white plastic bit at the bottom presses again the
LIX pen body and PTFE tubing.
IMG_20160106_185550

IMG_20160106_185625

Printed instructions in
both English and French

All-in-all, this is a neat design, but definataly has some problems. I personally would not have minded a longer wait, to clear some of these issues up. I think the USB power sliding out is going to be my biggest issue, once I get the feeder and my buttons both working again.

To anyone reading this who has got one, please let me know your experiences, be it the same, or different.

5 Comments :, , , , more...

Long time no type

by on Jan.06, 2016, under Uncategorized

loclhst

I know it has been a while since my last post. I have never been one for posting things just because.

I do not always document my projects and whatnot.

For this, I apologize.

If you don’t like it, come back next year for my next post!

Just kidding….I do plan to do some more postings. I always plan.  Following through is my problem.

Leave a Comment more...

3D Printing

by on Aug.25, 2014, under 3D Printing, Arduino, Hardware

loclhst

So off and on over the last few weeks , I have been dabbling around with 3D printing.

A few years back, I started to build a RepRap Prusa Mendel i1. I ran into issues and put it on the back burner.

Recently, I purchased the QUBD OneUp from Quintessential Universal Building Device. Despite the company being VERY slow at shipping, and constantly missing shipping deadlines, the printer itself is a decent entry level printer.  I was able to re-kindle my joy for 3D printing. Since getting the OneUp working, I have made a few enhancements, listed on my thingiverse profile, as well as had problems with my printrboard, as posted on the fabric8r forums.

Over the next few weeks, and probably months, I will be attempting to get my Prusa Mendel working again, making new and fun things, printing upgrades, and hopefully positing about all of it.

One of the long term goals with this that I have is to do some community events with intro to 3d printing.

Just thought I would post a little update on what I have been doing lately, when I am not doing system upgrades for work!

Leave a Comment :, , , , , , , more...

murmurd 1.2.8

by on Aug.24, 2014, under How-to, Linux, Software

loclhst

Sorry for the late reply all.  I have been busy with work and stuff outside of work.

I have recently compiled the 1.2.8 version into an rpm for everyone, provided they did not do one on their own!

As noted last time, the .spec file is located on my github at https://github.com/drdelaney/custom-rpm-spec and EPEL is still required for this install as well.

The only changes made to the spec file, outside of version numbers, is the leaving of the binary murmur.x86 under /opt/mumble-server, and then symlinking /usr/local/sbin/murmurd to /opt/mumble-server/murmur.x86

New installation

After verifying that you have the EPEL repo installed, just install the RPM!

[root@server ~]# yum --nogpgcheck --enablerepo=epel install http://files.loclhst.com/mumble/1.2.8/mumble-server-1.2.8-DrD.i386.rpm
...
Installed:
  mumble-server.i386 0:1.2.8-DrD

Complete!

Setting up the super password for the first time

[root@server~]# /usr/local/sbin/murmurd -ini /opt/mumble-server/mumble-server-default.ini -supw <new password>

Now start the server

[root@server ~]# /etc/init.d/mumble-server start
Starting mumble-server:                                    [  OK  ]

At this time, you may need to punch a hole in the firewall.

This setting will vary from system to system, but for common firewall settings, this should work

[root@server ~]# iptables -A INPUT -p tcp -m tcp --dport 64738 -j ACCEPT
[root@server ~]# iptables -A INPUT -p udp -m udp --dport 64738 -j ACCEPT
[root@server ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@server ~]# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

Upgrading from 1.2.5

make sure you have a backup of your working configuration!

Stop the server and Backup!

[root@server ~]# /etc/init.d/mumble-server stop
Shutting down mumble-server:                               [  OK  ]
[root@server ~]# tar czvpf /tmp/mumble125-$(date +%Y%m%d).tar.gz /opt/mumble-server/
tar: Removing leading `/' from member names
/opt/mumble-server/
/opt/mumble-server/mumble-server-123upgrade.sqlite
/opt/mumble-server/logrotate-mumble-server
/opt/mumble-server/weblist.pl
/opt/mumble-server/LICENSE
/opt/mumble-server/mumble-server-123_old.ini
/opt/mumble-server/weblist.php
/opt/mumble-server/mumble-server.ini.example
/opt/mumble-server/README
/opt/mumble-server/murmur.pl
/opt/mumble-server/icedemo.php
/opt/mumble-server/dbus-mumble-server.conf
/opt/mumble-server/Murmur.ice
/opt/mumble-server/mumble-server-default.ini

Upgrade the RPM

[root@server ~]# yum --nogpgcheck --enablerepo=epel upgrade http://files.loclhst.com/mumble/1.2.8/mumble-server-1.2.8-DrD.i386.rpm
...
Updated:
  mumble-server.i386 0:1.2.8-DrD

Complete!

Start the server and test

[root@server ~]# /etc/init.d/mumble-server start
Starting mumble-server:                                    [  OK  ]

Now after the installation or upgrade, make sure to connect your client to the server to make sure things [still] work.

That should be all there is.  If you run into any issues, drop a comment with the error, and I will try to help!

Starting service at system startup

If you want the service to start upon server startup/reboot, then add to the rc init system

[root@server~]# chkconfig --add mumble-server

The mumble server should now start automatically!

1 Comment :, , , , more...

murmurd 1.2.5

by on Feb.17, 2014, under How-to, Linux, Software

loclhst

Announced a few weeks ago, version 1.2.5 of the mumble client and server were released. There were a few security fixes and they urge everyone to upgrade.

By the request of a few of my readers, I have created the .spec and .rpm for my implementation for 1.2.5!

If you are running my version of the 1.2.3a instance, I suggest checking out my last post on the upgrade process to 1.2.4.

If you are running my version 1.2.4 instance, well then read on, because the upgrade is even simpler this time!

As noted last time, the .spec file is located on my github at https://github.com/drdelaney/custom-rpm-spec and EPEL is still required for this install as well.

New installation

After verifying that you have the EPEL repo installed, just install the RPM!

[root@server ~]# yum --nogpgcheck --enablerepo=epel install http://files.loclhst.com/mumble/1.2.5/mumble-server-1.2.5-DrD.i386.rpm
...
Installed:
  mumble-server.i386 0:1.2.5-DrD

Complete!

Setting up the super password for the first time

[root@server~]# /usr/local/sbin/murmurd -ini /opt/mumble-server/mumble-server-default.ini -supw <new password>

Now start the server

[root@server ~]# /etc/init.d/mumble-server start
Starting mumble-server:                                    [  OK  ]

At this time, you may need to punch a hole in the firewall.

This setting will vary from system to system, but for common firewall settings, this should work

[root@server ~]# iptables -A INPUT -p tcp -m tcp --dport 64738 -j ACCEPT
[root@server ~]# iptables -A INPUT -p udp -m udp --dport 64738 -j ACCEPT
[root@server ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@server ~]# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]



Upgrading from 1.2.4

make sure you have a backup of your working configuration!

Stop the server and Backup!

[root@server ~]# /etc/init.d/mumble-server stop
Shutting down mumble-server:                               [  OK  ]
[root@server ~]# tar czvpf /tmp/mumble124-$(date +%Y%m%d).tar.gz /opt/mumble-server/
tar: Removing leading `/' from member names
/opt/mumble-server/
/opt/mumble-server/mumble-server-123upgrade.sqlite
/opt/mumble-server/logrotate-mumble-server
/opt/mumble-server/weblist.pl
/opt/mumble-server/LICENSE
/opt/mumble-server/mumble-server-123_old.ini
/opt/mumble-server/weblist.php
/opt/mumble-server/mumble-server.ini.example
/opt/mumble-server/README
/opt/mumble-server/murmur.pl
/opt/mumble-server/icedemo.php
/opt/mumble-server/dbus-mumble-server.conf
/opt/mumble-server/Murmur.ice
/opt/mumble-server/mumble-server-default.ini

Upgrade the RPM

[root@server ~]# yum --nogpgcheck --enablerepo=epel upgrade http://files.loclhst.com/mumble/1.2.5/mumble-server-1.2.5-DrD.i386.rpm
...
Updated:
  mumble-server.i386 0:1.2.5-DrD

Complete!

Start the server and test

[root@server ~]# /etc/init.d/mumble-server start
Starting mumble-server:                                    [  OK  ]

Now after the installation or upgrade, make sure to connect your client to the server to make sure things [still] work.

That should be all there is.  If you run into any issues, drop a comment with the error, and I will try to help!

Starting service at system startup

If you want the service to start upon server startup/reboot, then add to the rc init system

[root@server~]# chkconfig --add mumble-server

The mumble server should now start automatically!

Updated 02/18/2014 – Adding in command for first time supw setting and firewall rules

20 Comments :, , , , , more...

Installing murmurd 1.2.4

by on Jun.06, 2013, under How-to, Linux, Software

loclhst

This is a follow up to my previous post, Installing murmurd the mumble voice server.

These instructions were written for CentOS 5.x/6.x, and for my personal setup (per my previous instructions).

I wish to convey the thought that any instructions, system changes, or RPM packages should be performed or installed at your own will, and I shall not be held responsible for any damage or problems that arise from performing the below instructions!

Please note that the RPM below was compiled on CentOS 6.3 and is currently known to be able to be installed and working on CentOS 6.3 and CentOS 5.7.

If you are doing a new installation with my RPM, just install it and start it!  If you are upgrading from my previous installation instructions, look below for the upgrade instructions.

If you would like to view the spec file used to create the RPM, you can do so on my github account https://github.com/drdelaney/custom-rpm-spec

UPDATE!: You will need to have the Fedora EPEL yum repository installed for this to work correctly.
Install the package for your system from the site https://fedoraproject.org/wiki/EPEL

Install a new instance

Install the RPM

yum --nogpgcheck --enablerepo=epel install http://files.loclhst.com/mumble/1.2.4/mumble-server-1.2.4-DrD.i386.rpm

Note if this does not work, you may need to wget the file and install from the local filesystem

cd /tmp/; wget http://files.loclhst.com/mumble/1.2.4/mumble-server-1.2.4-DrD.i386.rpm
yum --nogpgcheck --enablerepo=epel install ./mumble-server-1.2.4-DrD.i386.rpm

Set superuser password

/usr/local/sbin/murmurd -ini /opt/mumble-server/mumble-server-default.ini -supw

Start the service

/etc/init.d/mumble-server start

 

Upgrading

Upgrading from my 1.2.3 instructions are simple and quick!

Stop the running server

/etc/init.d/mumble-server stop

Create backup structure

I strongly suggest making sure these are stored somewhere outside of tmp if you want to revert down the road

mkdir -p /tmp/mumble-server-backup-1.2.3/{sbin,logrotate,etc,db}

Backup the files

mv /usr/local/sbin/murmurd /tmp/mumble-server-backup-1.2.3/sbin/
mv /etc/mumble-server.ini /etc/rc.d/init.d/mumble-server /tmp/mumble-server-backup-1.2.3/etc/
mv /etc/logrotate.d/mumble-server /tmp/mumble-server-backup-1.2.3/logrotate/
mv /var/lib/mumble-server/mumble-server.sqlite /tmp/mumble-server-backup-1.2.3/db/

Restore files for new version

mkdir -p /opt/mumble-server/
cp /tmp/mumble-server-backup-1.2.3/db/mumble-server.sqlite /opt/mumble-server/mumble-server-123upgrade.sqlite
cp /tmp/mumble-server-backup-1.2.3/etc/mumble-server.ini /opt/mumble-server/mumble-server-123_old.ini
cat /opt/mumble-server/mumble-server-123_old.ini | sed \
  -e 's,^database=.*,database=/opt/mumble-server/mumble-server-123upgrade.sqlite,g' \
  > /opt/mumble-server/mumble-server-default.ini

Cleanup

rm -rf /var/lib/mumble-server
chown -R mumble-server:mumble-server /opt/mumble-server/

Install new version

Note some extra packages may be needed, and should be pulled in automatically.
If they are not, make sure you install the rpmforge repo

yum --nogpgcheck install http://files.loclhst.com/mumble/1.2.4/mumble-server-1.2.4-DrD.i386.rpm

Note if this does not work, you may need to wget the file and install from the local filesystem

cd /tmp/; wget http://files.loclhst.com/mumble/1.2.4/mumble-server-1.2.4-DrD.i386.rpm
yum --nogpgcheck --enablerepo=epel install ./mumble-server-1.2.4-DrD.i386.rpm

I would highly suggest to update your ini with the example (/opt/mumble-server/mumble-server.ini.example)

Otherwise, at this point, you should be able to start up and go!

/etc/init.d/mumble-server start

At this point, you should have the package installed and hopefully working.

Drop me a comment if you have any questions or problems and I can try to help!

18 Comments :, , , , , more...

Burning Arduino bootrom on an ATmega328-PU, part 2

by on Apr.08, 2012, under Arduino, Hardware

loclhst

A recent comment on Burning Arduino bootrom on an ATmega328-PU had asked for some specific stuff, so instead of updating the existing post, I figured I would make a new one to expand on the data.

First off, the guide I was using is located at http://arduino.cc/en/Tutorial/ArduinoToBreadboard.  The pinout of the ATmega328-PU chip (as all is the same for the ATmega168, and ATmega328P-PU and similar chips) is as follows:

Atmega 168 Pin Map

So to answer the question, VCC is on AT Pin 20, and/or AT Pin7. the arduino writeup shows both VCC lines and both GND lines being connected, so I did both as well.

Between the breadboard and the solderboard design, I did make a small change.  Mainly I added the resister, caps, and external crystal for external clocking, instead of using the internal clock.

 

Again I had made some config changes in my boards.txt files, mainly splitting them up, but this is my config as it stands.

Avrdude.conf:  (download full file here)

#------------------------------------------------------------
# ATmega328 (non-picopower)
#------------------------------------------------------------

part
    id            = "m328";
    desc        = "ATMEGA328";
    has_debugwire    = yes;
    flash_instr        = 0xB6, 0x01, 0x11;
    eeprom_instr    = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
              0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
              0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode    = 0x86;
    # avr910_devcode    = 0x;
    signature        = 0x1e 0x95 0x14;
    pagel        = 0xd7;
    bs2            = 0xc2;
    chip_erase_delay    = 9000;
    pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
         "x x x x x x x x x x x x x x x x";

    chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
         "x x x x x x x x x x x x x x x x";

    timeout    = 200;
    stabdelay    = 100;
    cmdexedelay    = 25;
    synchloops    = 32;
    bytedelay    = 0;
    pollindex    = 3;
    pollvalue    = 0x53;
    predelay    = 1;
    postdelay    = 1;
    pollmethod    = 1;

    pp_controlstack =
    0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
    0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
    0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
    0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay    = 0;
    latchcycles        = 5;
    togglevtg        = 1;
    poweroffdelay    = 15;
    resetdelayms    = 1;
    resetdelayus    = 0;
    hvleavestabdelay    = 15;
    resetdelay        = 15;
    chiperasepulsewidth    = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    memory "eeprom"
    paged        = no;
    page_size    = 4;
    size        = 1024;
    min_write_delay = 3600;
    max_write_delay = 3600;
    readback_p1    = 0xff;
    readback_p2    = 0xff;
    read = " 1 0 1 0 0 0 0 0",
           " 0 0 0 x x x a9 a8",
           " a7 a6 a5 a4 a3 a2 a1 a0",
           " o o o o o o o o";

    write = " 1 1 0 0 0 0 0 0",
              " 0 0 0 x x x a9 a8",
        " a7 a6 a5 a4 a3 a2 a1 a0",
        " i i i i i i i i";

    loadpage_lo = " 1 1 0 0 0 0 0 1",
              " 0 0 0 0 0 0 0 0",
              " 0 0 0 0 0 0 a1 a0",
              " i i i i i i i i";

    writepage = " 1 1 0 0 0 0 1 0",
            " 0 0 x x x x a9 a8",
            " a7 a6 a5 a4 a3 a2 0 0",
            " x x x x x x x x";

    mode        = 0x41;
    delay        = 20;
    blocksize    = 4;
    readsize    = 256;
    ;

    memory "flash"
    paged        = yes;
    size        = 32768;
    page_size    = 128;
    num_pages    = 256;
    min_write_delay = 4500;
    max_write_delay = 4500;
    readback_p1    = 0xff;
    readback_p2    = 0xff;
    read_lo = " 0 0 1 0 0 0 0 0",
          " 0 0 a13 a12 a11 a10 a9 a8",
          " a7 a6 a5 a4 a3 a2 a1 a0",
          " o o o o o o o o";

    read_hi = " 0 0 1 0 1 0 0 0",
          " 0 0 a13 a12 a11 a10 a9 a8",
          " a7 a6 a5 a4 a3 a2 a1 a0",
          " o o o o o o o o";

    loadpage_lo = " 0 1 0 0 0 0 0 0",
              " 0 0 0 x x x x x",
              " x x a5 a4 a3 a2 a1 a0",
              " i i i i i i i i";

    loadpage_hi = " 0 1 0 0 1 0 0 0",
              " 0 0 0 x x x x x",
              " x x a5 a4 a3 a2 a1 a0",
              " i i i i i i i i";

    writepage = " 0 1 0 0 1 1 0 0",
            " 0 0 a13 a12 a11 a10 a9 a8",
            " a7 a6 x x x x x x",
            " x x x x x x x x";

    mode        = 0x41;
    delay        = 6;
    blocksize    = 128;
    readsize    = 256;

    ;

    memory "lfuse"
    size = 1;
    min_write_delay = 4500;
    max_write_delay = 4500;
    read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
           "x x x x x x x x o o o o o o o o";

    write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
              "x x x x x x x x i i i i i i i i";
    ;

    memory "hfuse"
    size = 1;
    min_write_delay = 4500;
    max_write_delay = 4500;
    read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
           "x x x x x x x x o o o o o o o o";

    write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
              "x x x x x x x x i i i i i i i i";
    ;

    memory "efuse"
    size = 1;
    min_write_delay = 4500;
    max_write_delay = 4500;
    read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
           "x x x x x x x x x x x x x o o o";

    write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
              "x x x x x x x x x x x x x i i i";
    ;

    memory "lock"
    size = 1;
    min_write_delay = 4500;
    max_write_delay = 4500;
    read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
           "x x x x x x x x x x o o o o o o";

    write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
              "x x x x x x x x 1 1 i i i i i i";
    ;

    memory "calibration"
    size = 1;
    read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
           "0 0 0 0 0 0 0 0 o o o o o o o o";
    ;

    memory "signature"
    size = 3;
    read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
           "x x x x x x a1 a0 o o o o o o o o";
    ;
;

boards.txt: (download files for breadboard and custom 328-PU Uno/Duemilanove)

# this snip is only of my custom changes for the uno/duemilanove, check the files for both breadboard data and custom full files.

###  Duemilanove atmega328-pu (non-picopower)
atmega328npp.name=[loclhst] Arduino Duemilanove w/ ATmega328-PU (non-picopower)

atmega328npp.upload.protocol=arduino
atmega328npp.upload.maximum_size=30720
atmega328npp.upload.speed=57600

atmega328npp.bootloader.low_fuses=0xFF
atmega328npp.bootloader.high_fuses=0xDA
atmega328npp.bootloader.extended_fuses=0x05
atmega328npp.bootloader.path=atmega
atmega328npp.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328npp.bootloader.unlock_bits=0x3F
atmega328npp.bootloader.lock_bits=0x0F

atmega328npp.build.mcu=atmega328
atmega328npp.build.f_cpu=16000000L
atmega328npp.build.core=arduino
atmega328npp.build.variant=standard

### Uno atmega238-PU (non-picopower)
unonpp.name=[loclhst] Arduino Uno (non-picopower)
unonpp.upload.protocol=arduino
unonpp.upload.maximum_size=32256
unonpp.upload.speed=115200
unonpp.bootloader.low_fuses=0xff
unonpp.bootloader.high_fuses=0xde
unonpp.bootloader.extended_fuses=0x05
unonpp.bootloader.path=optiboot
unonpp.bootloader.file=optiboot_atmega328.hex
unonpp.bootloader.unlock_bits=0x3F
unonpp.bootloader.lock_bits=0x0F
unonpp.build.mcu=atmega328
unonpp.build.f_cpu=16000000L
unonpp.build.core=arduino
unonpp.build.variant=standard

Also in my testing, I found I needed to copy the bootloaders (arduino-1.0\hardware\arduino\bootloaders) folder to my custom folder for the ROMs I was burning.

I am also using a adafruit FTDI Friend for my arduino to PC communications with the Arduino 1.0 software.

With the above data, I have been able to successfully burn the Uno and Duemilanove ROMs with an external crystal, as well as the Duemilanove ROM on breadboard with the internal 8mHz crystal.

4 Comments :, , , , , more...

Burning Arduino bootrom on an ATmega328-PU

by on Mar.31, 2012, under Arduino, Hardware, How-to

loclhst

Like many people, I purchased a handful of the ATmega328-PU microprocessor chips, not realizing there are two, the ATmega328P-PU and ATmega328-PU.  Note the additional P in the first, which stands for picopower; in other words, it has better power consumption.

Well, since most of the arudino stuff is designed around flashing the 328P-PU chip, there are some modifications to be made to a few files to allow you to do this.  However the current instructions have you CHANGE the 328P-PU, then change it back. This does not fly for me, because I may be going between various systems, or not remember to change it back, so my solution, was to add additional support for the 328-PU chip, on top of the 328P-PU chip!

Without changing anything, you will get an error similar to

Expected signature for ATMEGA328P is 1E 95 0F Double check chip, or use -F to override this

The normal solution, provided by a number of places is to edit the avrdude.conf file, then change the signature for the ATMEGA328P chip from 0x1e 0x95 0x0F to 0x1e 0x95 0x14. [Google Search].

My solution is the copy the ATMEGA328P section, and rename the copy to ATMEGA328, then change the signature on this.  the avrdude.conf file should be located in the Arduino director, under hardware/tools/avr/etc. Remember to always make a back up of any file you edit!

Next up, you will need to replicate the Board/Hardware settings, changing the value for the mcu entry.

Since we do not want to edit the hardware.txt file directly, as this does not get saved between versions, you will want to go to your sketch folder, and make a sub folder called “hardware”, within this folder, have another sub folder called “breadboard”, and within this folder, you want a file called hardware.txt, which will contain our data.

For example, if you will be using “Arduino Duemilanove w/ ATmega328”, you will want to add an entry of:

# atmega328-pu (non-picopower)
atmega328npp.name=Arduino Duemilanove w/ ATmega328 (non-picopower)

atmega328drd.upload.protocol=arduino
atmega328drd.upload.maximum_size=30720
atmega328drd.upload.speed=57600

atmega328drd.bootloader.low_fuses=0xFF
atmega328drd.bootloader.high_fuses=0xDA
atmega328drd.bootloader.extended_fuses=0x05
atmega328drd.bootloader.path=atmega
atmega328drd.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328drd.bootloader.unlock_bits=0x3F
atmega328drd.bootloader.lock_bits=0x0F

atmega328drd.build.mcu=atmega328
atmega328drd.build.f_cpu=16000000L
atmega328drd.build.core=arduino
atmega328drd.build.variant=standard

Notice, I added in drd to add the atmega328.* lines, the .name field has been changed, and the .mcu line has been changed to atmega328, which is the same name I used in the avrdude.conf file.

In my case, since I am using a breadboard to program, and not using an external crystal [ArduinoISP on a Breadboard], I am using an add on breadboard hardware.txt entry which was recommended from the Arduino website.

This should only be required when installing the bootrom, using the standard hardware selection, I am able to upload without any issues.

If all goes okay, you should now have a working ArduinoISP and similar that can flash the ATmega328-PU chips with no issues!

ArduinoISP on a Breadboard

 

Update: 2012-04-07

Here is the completed ArduinoISP on a solder board. Though the last image is missing one piece…10 points goes to who finds it..

Arduino-Like board pt 1Arduino-Like board pt 2Arduino-Like board pt 3

7 Comments :, , , , , , , more...

Making an Arduino-Like Board

by on Mar.31, 2012, under Arduino, Hardware, How-to

loclhst

Recently, I have been getting into the whole Arduino [arduino.cc] micro controller scene.  It is a fun platform that combines electronics as well as programming into one device that allows you do do various tasks.

I had recently attended a few Arduino learning courses at a local hackerspace, Pumping Station: One [pumpingstationone.org], which allowed me to build my own Arduino-like board.

Arduino-Like board

If you would like to see the schematic for this, you should visit Ed Bennett’s Website at http://kineticsandelectronics.com/.

 

Taking this a step further, I decided to order parts to make a few more boards, and later try my luck at an ArduinoISP setup. After following the guide from the above setup, I was able to make an Arduino-Like board on a breadboard.

Arduino-Like Breadboard

So, I am now able to run Blink on my Boarduino!

Next up…turning it into an ArduinoISP, and flashing my own chip!

1 Comment :, , , , , , more...

Installing murmurd, the mumble voice server

by on Jan.09, 2012, under How-to, Linux, Software

loclhst

UPDATE! Check out my instructions for installing/upgrading to mumble-server 1.2.4!

 

I was recently upgrading my TeamSpeak3 server, when a friend mentioned that I should try the mumble application. Murmur is an open source voice server, which works with the open source voice client, Mumble. The functions are similar to that of TeamSpeak and Ventrillo.

As a challenged, I was asked to get it working on CentOS as the current listed instructions [mumble.sourceforge.net] are somewhat broken and outdated. The first problem I ran into was that the package they list from the GBS repository was down or not working. The second problem, was that the manual instructions are for an older version, and differ slightly in the command set to extract the files.

You can download my short and simple script if you want to cut to the chase by issuing the following command from a shell prompt, or you can read below for the step by step instructions (which is identical to the script!)

wget --no-cache http://code.loclhst.com/?download=build_mumble-1.2.3.sh -O build_mumble-1.2.3.sh
sudo sh ./build_mumble-1.2.3.sh

Installing the dependencies

sudo su -
yum -y install lzma cpio

Testing on a fresh installed box, I only needed one set of applications.  This is from the original instructions, and is simple enough.

Set up temporary environment

rm -rf /tmp/build-mumble
mkdir -p /tmp/build-mumble
cd /tmp/build-mumble

This is just done for organization, so we do not have a bunch of random files in our paths.

Grab the packages from the internet

wget http://downloads.sourceforge.net/project/mumble/Mumble/1.2.3/murmur-static_x86-1.2.3.tar.bz2
wget ftp://rpmfind.net/linux/Mandriva/devel/cooker/x86_64/media/contrib/release/mumble-server-1.2.3-1-mdv2011.0.x86_64.rpm

This is where I deviate from the original page, because I want the latest stable (original lists 1.2.2, and currently 1.2.3 is out). As a side note, if these are ever taken down, I have made a backup copy of both on my personal server.  They are accessible via http://files.loclhst.com/mumble/1.2.3/, using the same file names as above. NOTE! I will remove this if it ever becomes abused.

Extract the files

tar xjvf murmur-static_x86-1.2.3.tar.bz2
mkdir mumble-rpm
cd mumble-rpm
rpm2cpio ../mumble-server-1.2.3-1-mdv2011.0.x86_64.rpm | lzma -dc | cpio -imv --make-directories

Again I differ here, because the files have changed, and why enter in more commands when you can chain them all together with pipe! This will extract all the files from the bz2 and 64bit rpm into the current working directory. Note: If you are installing this on CentOS 6, you will need to omit the “lzma -dc |” data, so your last line should be:

rpm2cpio ../mumble-server-1.2.3-1-mdv2011.0.x86_64.rpm | cpio -imv --make-directories

Copy our binary files and configs

cp ../murmur-static_x86-1.2.3/murmur.x86 /usr/local/sbin/murmurd
if [ ! -f /etc/mumble-server.ini ]; then cp etc/mumble-server.ini /etc; fi
if [ -d /etc/logrotate.d ]; then cp etc/logrotate.d/mumble-server /etc/logrotate.d/; fi
if [ -d /etc/dbus-1/system.d ]; then cp etc/dbus-1/system.d/mumble-server.conf /etc/dbus-1/system.d/; fi
sed -e 's/gprintf/printf/g' -e 's,^DAEMON=.*,DAEMON=/usr/local/sbin/murmurd,g' etc/rc.d/init.d/mumble-server > /etc/rc.d/init.d/mumble-server
chmod a+x /etc/rc.d/init.d/mumble-server

This copies the needed files from the current directory to the final destination. the if statements are so we either do not overwrite an existing config (say we are upgrading) or so we do not copy configs for logrotate or dbus if we do not need them. the fancy sed command will fix a few things in the init.d script, such as the path to murmurd and some print statements.  I prefer my non-system impacting binaries in /usr/local/.  Feel free to change this if you would like.

Add user/group, as well as directories for the binary

groupadd -g 4000 mumble-server
useradd -g 4000 -G mumble-server -s /sbin/nologin -d /var/run/mumble-server -M mumble-server
mkdir -p /var/lib/mumble-server /var/log/mumble-server /var/run/mumble-server
chown -R mumble-server:mumble-server /var/log/mumble-server /var/lib/mumble-server /var/run/mumble-server

You can use whichever UID/GID. I used the ones listed from the original documentation, only because I do not have a group in the 4000 range, nor do I care what my UID is. Make sure to fix ownership of all paths.

Final notes and warnings

Next start the server, and add it to boot services, try

chkconfig --add mumble-server
chkconfig --level 35 mumble-server on
service mumble-server start

And finally ALWAYS make sure to update your SuperUser password with the following command after you start the service for the first time.

/usr/local/sbin/murmurd -ini /etc/mumble-server.ini -readsupw

This way your system is at least somewhat secured! Also do not forget to make any changes to the stock ini file, such as if you want to change your Root channel name, or add a server password.

You can check any log output by tailing the log file at /var/log/mumble-server/mumble-server.log

Do not forget to punch a hole in your firewall for port 64738, or whichever you configure the service for!

These instructions are found to be working correctly CentOS 5.2, CentOS 5.7 with cr-updates applied, and CentOS 6.2 with cr-updates applied.  It should work with any version of CentOS 5.x and 6.x, and possibly any RHEL 5/6 variant.

26 Comments :, , , , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!