Bitcoin Forum
December 05, 2024, 09:09:14 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 »
  Print  
Author Topic: Ultra Under-overclock image for A2 Innosilicon by Emdje - V5.0  (Read 79804 times)
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
October 13, 2014, 07:33:21 AM
 #121

I can't get the v2.1-MiniTerminator image working with my new A2 Mini Terminator. Here a debug from run.sh:

Code:
[2014-10-11 18:33:24] Started cgminer 3.9.0
 [2014-10-11 18:33:24] Run Reset=1
 [2014-10-11 18:33:24] ST MCU hardware reset start
 [2014-10-11 18:33:28] SPI Speed 4000 kHz
 [2014-10-11 18:33:28] ST MCU - Enable (Pre-header)
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] AUTO GPIO CS
 [2014-10-11 18:33:28] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] Failure(cs0)(20): missing ACK for cmd 0x04
 [2014-10-11 18:33:29] ACK(cs0) timeout:cmd_RESET_BCAST-1.5556s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] SPI(cs1) no device
 [2014-10-11 18:33:29] ACK(cs1) timeout:cmd_RESET_BCAST-0.2142s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] SPI(cs2) no device
 [2014-10-11 18:33:29] ACK(cs2) timeout:cmd_RESET_BCAST-0.2165s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] SPI(cs3) no device
 [2014-10-11 18:33:29] ACK(cs3) timeout:cmd_RESET_BCAST-0.2161s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:30] Failure(cs4)(20): missing ACK for cmd 0x04
 [2014-10-11 18:33:30] ACK(cs4) timeout:cmd_RESET_BCAST-1.3649s
 [2014-10-11 18:33:30] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:30] SPI(cs5) no device
 [2014-10-11 18:33:30] ACK(cs5) timeout:cmd_RESET_BCAST-0.2177s
 [2014-10-11 18:33:30] No any A1 board

No any A1 board
: Inappropriate ioctl for device


I will have to look more closely to that.
rabbitr32
Newbie
*
Offline Offline

Activity: 22
Merit: 0


View Profile
October 13, 2014, 06:28:15 PM
 #122

I can't get the v2.1-MiniTerminator image working with my new A2 Mini Terminator. Here a debug from run.sh:

Code:
[2014-10-11 18:33:24] Started cgminer 3.9.0
 [2014-10-11 18:33:24] Run Reset=1
 [2014-10-11 18:33:24] ST MCU hardware reset start
 [2014-10-11 18:33:28] SPI Speed 4000 kHz
 [2014-10-11 18:33:28] ST MCU - Enable (Pre-header)
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] A1 = 1200,10
 [2014-10-11 18:33:28] A1 PLL Clock = 1200MHz
 [2014-10-11 18:33:28] AUTO GPIO CS
 [2014-10-11 18:33:28] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] Failure(cs0)(20): missing ACK for cmd 0x04
 [2014-10-11 18:33:29] ACK(cs0) timeout:cmd_RESET_BCAST-1.5556s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] SPI(cs1) no device
 [2014-10-11 18:33:29] ACK(cs1) timeout:cmd_RESET_BCAST-0.2142s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] SPI(cs2) no device
 [2014-10-11 18:33:29] ACK(cs2) timeout:cmd_RESET_BCAST-0.2165s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:29] SPI(cs3) no device
 [2014-10-11 18:33:29] ACK(cs3) timeout:cmd_RESET_BCAST-0.2161s
 [2014-10-11 18:33:29] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:30] Failure(cs4)(20): missing ACK for cmd 0x04
 [2014-10-11 18:33:30] ACK(cs4) timeout:cmd_RESET_BCAST-1.3649s
 [2014-10-11 18:33:30] SPI '/dev/spidev0.0': mode=1, bits=8, speed=4000000
 [2014-10-11 18:33:30] SPI(cs5) no device
 [2014-10-11 18:33:30] ACK(cs5) timeout:cmd_RESET_BCAST-0.2177s
 [2014-10-11 18:33:30] No any A1 board

No any A1 board
: Inappropriate ioctl for device


I will have to look more closely to that.

I had exactly the same problem with my A2Mega 110M Terminator .. any update?? Thanks!
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
October 13, 2014, 09:03:06 PM
 #123

Seems there is no acknowledgment send back when the reset command is given. Because a reset of the chips is mandatory for the miner to start hashing (and not detected) it thinks there are no chips, thus does not start. Don't know yet how to fix it though  Undecided
hozer
Sr. Member
****
Offline Offline

Activity: 271
Merit: 254


View Profile WWW
October 24, 2014, 01:38:53 AM
 #124

yep, setting initial difficulty appears to work for west/nicehash Smiley
good  Smiley

I'm probably going to try editing the main page for more main pools, I'm going away for 2 1/2 months soon...
What I did is registering my miner on miningrigrentals and set up 5 pools there. You can put you miner on unavailable when you don't want to rent it out. Mine is available most of the time for a price I am willing to rent it for (higher than what I can mine), so when it gets rented it is profit.
Then I set 1 or 2 pools on the 'main page' for when miningrigrentals goes down.

 
Would you liase with Michelle who does minera? I've got 38 undervolted gridseeds blades doing 20% more mh/J than A2s running on minera, less Mh, but higher profit Smiley.
I'll be happy to try out anything you two cook up. I'm currently running a 48 chip A2box, but can also test a 16 chip a2mini. I had 2 dead blades in the A2box so the mini donated its blades.

A2 probably getting undervolted soon.
I don't know Michelle (you got info?). And I am not sure if I am able to undervolt the A2's. There are some suggestions that it can be done throught the software, I haven't found out how yet. When it must be done by hardware I will not be of any help, because I have not much experience in that field.

Did you ever undervolt the A2? What Does it look like emdje's picture that I marked up?


If we can figure out how to adjust the voltage in software I want to try dropping the voltage while it's running. I was able to do that with an A1 board that never made it into production because of other issues (with the power supply), but it seems worth trying.

Right now I'm more interested in using my A2 mini as a space heater so hash/j is not very relevant (yet).

On the other hand, if anyone has a stack of innosilicon A2 minis (or even full A2 terminators) I might be interested in buying two or three to play with.
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
October 24, 2014, 08:49:23 AM
Last edit: October 25, 2014, 04:02:57 PM by emdje
 #125

I have a very crappy photo to go on from my phone, but after some enhancement with  photoshop  Grin I think the component on the left is the following:

ARM STM32F103 vet6

Datasheet: http://www.espruino.com/datasheets/STM32F103xC.pdf
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
October 24, 2014, 09:35:57 PM
 #126

Better images:
MCU:


Possible voltage regulators:
hozer
Sr. Member
****
Offline Offline

Activity: 271
Merit: 254


View Profile WWW
October 31, 2014, 01:58:00 AM
 #127

I have a very crappy photo to go on from my phone, but after some enhancement with  photoshop  Grin I think the component on the left is the following:

ARM STM32F103 vet6

Datasheet: http://www.espruino.com/datasheets/STM32F103xC.pdf

You got it on the microcontroller.

Unfortunately I have no idea what that part that I think is a voltage regulator that is marked with '33Z' is.
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
October 31, 2014, 10:43:42 AM
 #128

Making progress in building cgminer 4.7.0. Some errors left but getting there  Grin
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
October 31, 2014, 11:11:05 PM
 #129

Pff another error. Anyone any ideas??:
Code:
.......
make[1]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-A'
  CC       cgminer-cgminer.o
cgminer.c: In function ‘watchdog_thread’:
cgminer.c:8635:12: error: ‘struct cgpu_info’ has no member named ‘restart’
Makefile:876: recipe for target 'cgminer-cgminer.o' failed
make[1]: *** [cgminer-cgminer.o] Error 1
make[1]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-A'
Makefile:1486: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1
BakSAj
Full Member
***
Offline Offline

Activity: 157
Merit: 100


View Profile
November 01, 2014, 08:12:05 AM
 #130

Making progress in building cgminer 4.7.0. Some errors left but getting there  Grin

good luck!
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
November 02, 2014, 08:21:51 PM
 #131

Making progress in building cgminer 4.7.0. Some errors left but getting there  Grin
good luck!

Error solved, variable was defined in miner.h. Already wrote the new miner.h, only to forget to copy that to the PI  Roll Eyes

Have been working remotely on it (am not home) so I can't test it yet on the A2, but:
CGminer 4.7.0 with A2 support is successfully compiled  Grin
Tomorrow I will test it out and let you guys know if it works or not.
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
November 05, 2014, 08:55:11 AM
 #132

No joy for the newly compiled cgminer, it does not start and I do not get anything in the log.
Anyone any ideas on how I should debug cgminer when it starts up?
wolfbg
Newbie
*
Offline Offline

Activity: 10
Merit: 0


View Profile WWW
November 06, 2014, 04:48:13 AM
 #133

do you get any debug information trying to start it by adding: -D -T --verbose
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
November 06, 2014, 09:46:42 AM
 #134

do you get any debug information trying to start it by adding: -D -T --verbose

thnx.

When I start cgminer through the terminal it runs. However through the web interface it does not. Webinterface does give statistics and saying it runs at 40MH/s  Shocked
I am letting it run for now to see what miningrigrentals says after a couple of hours.
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
November 06, 2014, 09:55:49 AM
 #135

Restarted cgminer with clock frequencies, stats are normal now on the webinterface.

Still letting it run for a while to see what is does. And I have to figure out how to let it start automatically through the webinterface.
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
November 06, 2014, 02:21:09 PM
 #136

Cgminer 4.7.0 is running pretty good (when started through the terminal). I just don't know where it gets the idea that it is cgminer 3.9.0  Undecided
Anyone any idea where that info might come from?


emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
November 06, 2014, 02:38:23 PM
 #137

For anyone who is interested and as 'proof', here some output (ignore the name of the folder this is just my own way of tracking the rewrite versions).

Last lines of ./configure output:
Code:
configure: creating ./config.status
config.status: creating jansson.pc
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/jansson_config.h
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
------------------------------------------------------------------------
cgminer 4.7.0
------------------------------------------------------------------------
Configuration Options Summary:

  libcurl(GBT+getwork).: Enabled: -lcurl 
  curses.TUI...........: FOUND: -lncurses

  Antminer.S1.Bitmain..: Disabled
  Antminer.S2.Bitmain..: Disabled
  Avalon.ASICs.........: Disabled
  Avalon2.ASICs........: Disabled
  BlackArrowMinion.ASIC: Disabled
  BlackArrow.ASICs.....: Disabled
  BFL.ASICs............: Disabled
  BitForce.FPGAs.......: Disabled
  BitFury.ASICs........: Disabled
  BlockErupter.ASICs...: Disabled
  Cointerra.ASICs......: Disabled
  Spond-sp10.ASICs.....: Disabled
  Spond-sp30.ASICs.....: Disabled
  Bitmine-A1.ASICs.....: Enabled
  Drillbit.BitFury.....: Disabled
  Hashfast.ASICs.......: Disabled
  Hashratio.ASICs......: Disabled
  Icarus.ASICs/FPGAs...: Disabled
  Klondike.ASICs.......: Disabled
  KnC.ASICs............: Disabled
  ModMiner.FPGAs.......: Disabled

Compilation............: make (or gmake)
  CPPFLAGS.............:
  CFLAGS...............: -g -O2
  LDFLAGS..............:  -lpthread
  LDADD................: -ldl -lcurl   compat/jansson-2.6/src/.libs/libjansson.a -lpthread    -lm  -lrt

Installation...........: make install (as root if needed, with 'su' or 'sudo')
  prefix...............: /usr/local

And this is the sudo make install output:
Code:
pi@raspberrypi ~/Downloads/cgminer-4.7.0-A2-changable $ sudo make install
Making install in lib
make[1]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
make  install-recursive
make[2]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
make[3]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
make[4]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
make[4]: Nothing to be done for 'install-exec-am'.
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
make[3]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
make[2]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
make[1]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/lib'
Making install in compat
make[1]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat'
Making install in jansson-2.6
make[2]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6'
Making install in src
make[3]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6/src'
  CC       pack_unpack.lo
  CC       strbuffer.lo
  CC       strconv.lo
  CC       value.lo
  CCLD     libjansson.la
make[4]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6/src'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libjansson.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libjansson.so.4.5.0 /usr/local/lib/libjansson.so.4.5.0
libtool: install: (cd /usr/local/lib && { ln -s -f libjansson.so.4.5.0 libjansson.so.4 || { rm -f libjansson.so.4 && ln -s libjansson.so.4.5.0 libjansson.so.4; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libjansson.so.4.5.0 libjansson.so || { rm -f libjansson.so && ln -s libjansson.so.4.5.0 libjansson.so; }; })
libtool: install: /usr/bin/install -c .libs/libjansson.lai /usr/local/lib/libjansson.la
libtool: install: /usr/bin/install -c .libs/libjansson.a /usr/local/lib/libjansson.a
libtool: install: chmod 644 /usr/local/lib/libjansson.a
libtool: install: ranlib /usr/local/lib/libjansson.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/usr/local/include'
 /usr/bin/install -c -m 644 jansson.h jansson_config.h '/usr/local/include'
make[4]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6/src'
make[3]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6/src'
make[3]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6'
make[4]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6'
make[4]: Nothing to be done for 'install-exec-am'.
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -m 644 jansson.pc '/usr/local/lib/pkgconfig'
make[4]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6'
make[3]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6'
make[2]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat/jansson-2.6'
make[2]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat'
make[3]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat'
make[2]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat'
make[1]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/compat'
Making install in ccan
make[1]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/ccan'
make[2]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/ccan'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/ccan'
make[1]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable/ccan'
make[1]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable'
  CC       cgminer-cgminer.o
  CC       cgminer-util.o
  CC       cgminer-sha2.o
  CC       cgminer-api.o
  CC       cgminer-logging.o
  CC       cgminer-klist.o
  CC       cgminer-noncedup.o
  CC       cgminer-driver-SPI-bitmine-A1.o
  CC       cgminer-spi-context.o
  CCLD     cgminer
make[2]: Entering directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable'
 /bin/mkdir -p '/usr/local/bin'
  /bin/bash ./libtool   --mode=install /usr/bin/install -c cgminer '/usr/local/bin'
libtool: install: /usr/bin/install -c cgminer /usr/local/bin/cgminer
make[2]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable'
make[1]: Leaving directory '/home/pi/Downloads/cgminer-4.7.0-A2-changable'
wolfbg
Newbie
*
Offline Offline

Activity: 10
Merit: 0


View Profile WWW
November 06, 2014, 09:29:02 PM
 #138

What do you get for output when you append to the newly compiled cgminer binary:

 --version|-V        Display version and exit

Also it looks like its only displaying 2 blades?
emdje (OP)
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500


View Profile WWW
November 06, 2014, 10:02:28 PM
 #139

What do you get for output when you append to the newly compiled cgminer binary:

 --version|-V        Display version and exit

Also it looks like its only displaying 2 blades?

I will take a look at you first question/suggestion tomorrow, it is very late here.
But to answer you first. I have an A2 Mini  Smiley, so only two blades.
wolfbg
Newbie
*
Offline Offline

Activity: 10
Merit: 0


View Profile WWW
November 06, 2014, 10:05:45 PM
 #140

Ahh okay make sense Wink  Get rest !
Pages: « 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!