Using a Flashair wifi sdcard on a 3D printer

Talk about using software tools, drivers etc

Using a Flashair wifi sdcard on a 3D printer

Postby thawkins » 2015-Feb-Wed-03-Feb

Shameless plug

I just posted a blog posting on Flashair wifi cards and 3d printers on my site

http://microfabricator.com/blogs/view/i ... 3d-printer

Mostly targeted at the flashforge/makerbot crowd, but most of it will work with marlin too, I'm going to do a Marlin specific followup.

let me know if there is anything that is unclear in the narrative and i will update.
  • 1

Jonbot+
225mm x 200mm - Heated Bed
RAMPS 1.4 running Marlin 1.1.0
Full Graphic display.
-------------------------------
Zen Toolworks CNC/3d printer
230mmx360mm bed
Dual j-head hotends.
Dual heated beds.
RAMPS 1.4 running Marlin 0.98
-------------------------------
Flashforge 3d Creator Pro
Dual Extruder
220x143x150mm
Mightyboard rev e, runnimg Sailfish 7.7r1234
-------------------------------
Photon, self designed printed printer.
User avatar
thawkins
Print winner 2nd
Print winner 2nd
 
Posts: 1636
Joined: 2013-Aug-Sun-10-Aug
Location: Manila, Philippines
Reputation: 172

Using a Flashair wifi sdcard on a 3D printer

Sponsor

Sponsor
 

Re: Using a Flashair wifi sdcard on a 3D printer

Postby wd5gnr » 2015-Feb-Wed-08-Feb

Cool. I have the flashair card, but I don't have the adapter yet. In transit.
  • 0

Al Williams
Twitter: @awce_com
FB: http://www.facebook.com/Understanding3dPrinting
User avatar
wd5gnr
Support material...
 
Posts: 491
Joined: 2012-Nov-Thu-10-Nov
Reputation: 22

Re: Using a Flashair wifi sdcard on a 3D printer

Postby wd5gnr » 2015-Mar-Sat-14-Mar

A few notes:

http://www.extrud3d.com/fashairui -- Looks good

I am kind of frustrated with it. Every time I change almost anything in the WIFI folder, the card hangs hard. The only solution is to find a Windows machine and reflash the firmware on it. As far as I can tell, even having an emacs backup file in there craters it. Also, just in testing, when I upload a file using upload.cgi on my Linux box, it shows up in the Web interface, but not in the mounted drive under Linux. May or may not work better on the printrbot--haven't got it to work yet.
  • 0

Al Williams
Twitter: @awce_com
FB: http://www.facebook.com/Understanding3dPrinting
User avatar
wd5gnr
Support material...
 
Posts: 491
Joined: 2012-Nov-Thu-10-Nov
Reputation: 22

Re: Using a Flashair wifi sdcard on a 3D printer

Postby wd5gnr » 2015-Mar-Sat-19-Mar

Well I'm frustrated. After reflashing the card a few dozen times, I finally got a configuration that took and even got the new UI working. All on my PC.

Using the adapter cable, the Printrbot does not see the SD card. It is getting power, because I can connect to it via WiFi, but Repetier Host can't find the card. I'm sure it is the extension cable. I have an LCD from GEEETech that has an SD card slot on it and the adapter for the board, but the board thickness means it won't plug into the Printrboard due to the wood case.

So I'm off to work on income taxes which should be slightly less frustrating. Net gain: 0
  • 0

Al Williams
Twitter: @awce_com
FB: http://www.facebook.com/Understanding3dPrinting
User avatar
wd5gnr
Support material...
 
Posts: 491
Joined: 2012-Nov-Thu-10-Nov
Reputation: 22

Re: Using a Flashair wifi sdcard on a 3D printer

Postby thawkins » 2015-Mar-Sun-04-Mar

wd5gnr wrote:Well I'm frustrated. After reflashing the card a few dozen times, I finally got a configuration that took and even got the new UI working. All on my PC.

Using the adapter cable, the Printrbot does not see the SD card. It is getting power, because I can connect to it via WiFi, but Repetier Host can't find the card. I'm sure it is the extension cable. I have an LCD from GEEETech that has an SD card slot on it and the adapter for the board, but the board thickness means it won't plug into the Printrboard due to the wood case.

So I'm off to work on income taxes which should be slightly less frustrating. Net gain: 0


I have several printers, and the flashair is in my flashforge machine. This uses a mightyboard controller, and everything works fine in that printer.

I have a second machine that uses a RAMPS card, with a reprap discount graphics controller with a full size sd card slot. If i pull the card out of the flashorge and stick it in there, it works as an sdcard, but the wifi does not work. I think there is something that Marlin is doing or there is not enough current on the 3.3v line. Flashairs like all sd cards run on 3.3v, the normal sd card uses about 15ma, but the flashair needs about 200ma to do its thing. The first thing that suffers when the card is starved if current is the wifi stops working.

Im doing a hack to my board next week to add a direct 3.3v regulator to the sd card socket, driven from the 12v line. The current one is driven from the 5v line, which is running off the 5v regulator.
  • 0

Jonbot+
225mm x 200mm - Heated Bed
RAMPS 1.4 running Marlin 1.1.0
Full Graphic display.
-------------------------------
Zen Toolworks CNC/3d printer
230mmx360mm bed
Dual j-head hotends.
Dual heated beds.
RAMPS 1.4 running Marlin 0.98
-------------------------------
Flashforge 3d Creator Pro
Dual Extruder
220x143x150mm
Mightyboard rev e, runnimg Sailfish 7.7r1234
-------------------------------
Photon, self designed printed printer.
User avatar
thawkins
Print winner 2nd
Print winner 2nd
 
Posts: 1636
Joined: 2013-Aug-Sun-10-Aug
Location: Manila, Philippines
Reputation: 172

Re: Using a Flashair wifi sdcard on a 3D printer

Postby Dolphin42 » 2015-Jun-Thu-05-Jun

Okay, well after configuring my flashair and even writing some javascript, it just wouldn't work on my rumba machine. But a little looking at the power buss with a scope quickly showed the problem. Manufacturer wants a 22uF tantalum (a 22uF ceramic would do nicely too, but not a common electrolytic!) but this graphics controller (a 64 x 128 unit from reprap discount) only had a 0.1uF cap on the output and as soon as the FlashAir tried to power up, the regulator would oscillate like crazy. It was rated at 500mA output and would have been fine if only they hadn't cut corners. Worth looking into the data sheet for your display board to see what they used and how it should have been done.
  • 0

Dolphin42
 

Re: Using a Flashair wifi sdcard on a 3D printer

Postby thawkins » 2015-Jun-Thu-07-Jun

Dolphin42 wrote:Okay, well after configuring my flashair and even writing some javascript, it just wouldn't work on my rumba machine. But a little looking at the power buss with a scope quickly showed the problem. Manufacturer wants a 22uF tantalum (a 22uF ceramic would do nicely too, but not a common electrolytic!) but this graphics controller (a 64 x 128 unit from reprap discount) only had a 0.1uF cap on the output and as soon as the FlashAir tried to power up, the regulator would oscillate like crazy. It was rated at 500mA output and would have been fine if only they hadn't cut corners. Worth looking into the data sheet for your display board to see what they used and how it should have been done.


Great catch

I have mine on my flashforge and it works great, but plug the same card into my ramps based machine with the same graphics controller and it does not work on wifi, only as an sd card.
  • 0

Jonbot+
225mm x 200mm - Heated Bed
RAMPS 1.4 running Marlin 1.1.0
Full Graphic display.
-------------------------------
Zen Toolworks CNC/3d printer
230mmx360mm bed
Dual j-head hotends.
Dual heated beds.
RAMPS 1.4 running Marlin 0.98
-------------------------------
Flashforge 3d Creator Pro
Dual Extruder
220x143x150mm
Mightyboard rev e, runnimg Sailfish 7.7r1234
-------------------------------
Photon, self designed printed printer.
User avatar
thawkins
Print winner 2nd
Print winner 2nd
 
Posts: 1636
Joined: 2013-Aug-Sun-10-Aug
Location: Manila, Philippines
Reputation: 172

Re: Using a Flashair wifi sdcard on a 3D printer

Postby Hman545 » 2015-Nov-Mon-01-Nov

Hey guys, I'm using a Ramps 1.4 + Arduino (Marlin) with the "Full Graphic Smart Controller" lcd but cant get my flashair to work. It only works as a normal SD.
I did the above and put a 22uf ceramic on the 3.3 reg output but no change.
Using a W-02 16gb card updated to latest firmware, wifi function works in other devices.
Any ideas what to try next?

Thanks.
  • 0

Hman545
Waiting to connect to printer...
 
Posts: 5
Joined: 2015-Nov-Mon-01-Nov
Reputation: 0

Re: Using a Flashair wifi sdcard on a 3D printer

Postby thawkins » 2015-Nov-Mon-03-Nov

Hman545 wrote:Hey guys, I'm using a Ramps 1.4 + Arduino (Marlin) with the "Full Graphic Smart Controller" lcd but cant get my flashair to work. It only works as a normal SD.
I did the above and put a 22uf ceramic on the 3.3 reg output but no change.
Using a W-02 16gb card updated to latest firmware, wifi function works in other devices.
Any ideas what to try next?

Thanks.


I have the same setup and have the same problem, I know the card works because if i lift it out of the RAMPS setup, and plug it into my Flashforge machine it works fine without any changes. I suspect its the current required, the FlashAir needs about 120ma to work on wifi, and a voltage of 3.3v, Im going to be lookimg at several possabilities including noise, voltage sag or low current next week when i can get some time, I have a jonbot that is being rewired that has the same hardware as you have there, which should be up and running again next week (it would have been today but the heat bed FET's legs broke so I have to dismantle it again to put a new one on the board.
  • 0

Jonbot+
225mm x 200mm - Heated Bed
RAMPS 1.4 running Marlin 1.1.0
Full Graphic display.
-------------------------------
Zen Toolworks CNC/3d printer
230mmx360mm bed
Dual j-head hotends.
Dual heated beds.
RAMPS 1.4 running Marlin 0.98
-------------------------------
Flashforge 3d Creator Pro
Dual Extruder
220x143x150mm
Mightyboard rev e, runnimg Sailfish 7.7r1234
-------------------------------
Photon, self designed printed printer.
User avatar
thawkins
Print winner 2nd
Print winner 2nd
 
Posts: 1636
Joined: 2013-Aug-Sun-10-Aug
Location: Manila, Philippines
Reputation: 172

Re: Using a Flashair wifi sdcard on a 3D printer

Postby Hman545 » 2015-Nov-Mon-05-Nov

I tried cutting the 3.3v trace to the card and soldered a separate 3.3v reg, measured 3.3v at the sd socket, no luck.
Interestingly wifi function starts working if you unplug the second flat cable from the lcd board, but cant read the SD on the lcd of coarse.
  • 0

Hman545
Waiting to connect to printer...
 
Posts: 5
Joined: 2015-Nov-Mon-01-Nov
Reputation: 0

Re: Using a Flashair wifi sdcard on a 3D printer

Postby thawkins » 2015-Nov-Tue-00-Nov

Hman545 wrote:I tried cutting the 3.3v trace to the card and soldered a separate 3.3v reg, measured 3.3v at the sd socket, no luck.
Interestingly wifi function starts working if you unplug the second flat cable from the lcd board, but cant read the SD on the lcd of coarse.


That implies that there must be some kind of status that is not being asserted or is being held reset on the sd card. It could be that a software fix would be possible. It could be something silly like marlin holding the sdcard "open" all the time. I seem to remember there was a "lock" mode to prevent writting while the sdcard was busy.

My jonbot with the full graphic card same as yours is amost ready to go, another weekend will see it ready, i will make this a priority to debug first.
  • 0

Jonbot+
225mm x 200mm - Heated Bed
RAMPS 1.4 running Marlin 1.1.0
Full Graphic display.
-------------------------------
Zen Toolworks CNC/3d printer
230mmx360mm bed
Dual j-head hotends.
Dual heated beds.
RAMPS 1.4 running Marlin 0.98
-------------------------------
Flashforge 3d Creator Pro
Dual Extruder
220x143x150mm
Mightyboard rev e, runnimg Sailfish 7.7r1234
-------------------------------
Photon, self designed printed printer.
User avatar
thawkins
Print winner 2nd
Print winner 2nd
 
Posts: 1636
Joined: 2013-Aug-Sun-10-Aug
Location: Manila, Philippines
Reputation: 172

Re: Using a Flashair wifi sdcard on a 3D printer

Postby ByReaL » 2015-Nov-Thu-18-Nov

I did some tests of my own and the card i using 127mA on normal usage, and it spikes higher anyway never seen it over 200mA @ 3.3V very important 3.3V (see below text why 3.3V is important)
i powered the card from a semi professional power supply with 3.3V and it worked flawlessly

now when i plug the card in some old laptop or my 3d printer the wify sometimes some on for a brief sec and than it just dies

i have a RUMBA with the graphical LDC/SD slot

now the schematics shows reprap RRD_FULL_GRAPHIC_SMART_CONTROLER_SCHEMATIC.pdf
they use a MIC5209-3.3 (google for the spec pdf)
now if we look further this power the SD card.
if we read the data spec on this we see that as the power consumption goes up there is a voltage drop out
Voltage - Dropout (Typical) @ 150mA is 165mV
Voltage - Dropout (Max) @ 150mA is 300-400mV
so in worst case when the WiFi uses max current the voltage may drop to 2.9V and typicaly will be around 3.15V so not 3.3V (see the first row)
so 1 flow may be here that the MIC5209 component may not be able to keep up with the demand.

quick solution may be to add an electrolytic capacitor before and after the MIC2509 to make sure we can alleviate some of the 2.9V dips
even so we may not be able to alleviate the 3.15V, for this we may need to replace the MIC2509 with some other component, anyway i could not find any that is a direct replacement , solderer the MIC2509 put something in place and get the card working (if anyone has any suggestion please let me know i'm wiling to try)

anyway even if this is fixed (on paper with a imaginary better part) as somebody posted before we may run into a limitation now because of the 5V regulator, that may need also some electrolytic caps to smooth the dips or maybe an upgrade to be able to provide the required power (have not done research myself but that looks to be the next week link)

so instead of desoldering and changing 3v and 5v regs and adding caps ... it may be better as somebody already suggested to just get a 12V to 3.3V regulator and power the card that way.
there are some 3.3V@3A ones on amazon/ebay
a bit overkill but at least you will know you have enough power on the 3.3V rail.
  • 0

ByReaL
 

Re: Using a Flashair wifi sdcard on a 3D printer

Postby thawkins » 2015-Nov-Fri-08-Nov

Its worth noting that if you are using an ATX psu, it has a high power 3.3v output rail (orange). It may be worth just desoldering the regulator and fit a pin on the output pad, so that it can be hooked straight into the 3.3v rail from the psu.
  • 0

Jonbot+
225mm x 200mm - Heated Bed
RAMPS 1.4 running Marlin 1.1.0
Full Graphic display.
-------------------------------
Zen Toolworks CNC/3d printer
230mmx360mm bed
Dual j-head hotends.
Dual heated beds.
RAMPS 1.4 running Marlin 0.98
-------------------------------
Flashforge 3d Creator Pro
Dual Extruder
220x143x150mm
Mightyboard rev e, runnimg Sailfish 7.7r1234
-------------------------------
Photon, self designed printed printer.
User avatar
thawkins
Print winner 2nd
Print winner 2nd
 
Posts: 1636
Joined: 2013-Aug-Sun-10-Aug
Location: Manila, Philippines
Reputation: 172

Re: Using a Flashair wifi sdcard on a 3D printer

Postby ByReaL » 2015-Nov-Fri-18-Nov

having an TAX power supply also solves the problem.
i hope the creators of rumba/ramps/rambo/..... will take a note of this and create a new revision that will work out of the box.

ok did some quick math and the 5V reg is good for 600mA
if we add 2x atmega + 1x lcd + 4x A4988 stepper controllers + ...... at max i see about 100-200mA being used (quick math not measurment)

i'll do some measurements and i'll report back

i'll also order
AP2111H-3.3TRG1DICT-ND
IC REG LDO 3.3V 0.6A SOT223
+ 1 100uF and 1 10uF aluminum electrolytic capacitors and add the 10uF before the regulator and the 100uF immediately after

at this moment i believe the 3.3V line is not having enough juice to power the wifi in the card
  • 0

ByReaL
 

Re: Using a Flashair wifi sdcard on a 3D printer

Postby Hman545 » 2015-Nov-Sat-01-Nov

When you powered the card externally did you have the lcd board plugged into the printer with the printer on?

Ive tried powering the card externally whilst plugged into the printer with no luck, but if I unplug the right hand side flat cable (looking from the back of lcd) then turn the printer on, the lcd and card powers up (on the stock regulator) and wifi function works normally.
I don't think the regulator is the issue.
The regulator on my discount lcd board is a AMS1117 and powers the card fine with the data cable unplugged.
  • 0

Hman545
Waiting to connect to printer...
 
Posts: 5
Joined: 2015-Nov-Mon-01-Nov
Reputation: 0

Re: Using a Flashair wifi sdcard on a 3D printer

Postby ByReaL » 2015-Nov-Mon-18-Nov

I powered it outside of anything took the alligator clips from my programmable power supply and connected them directly to the SD card with no other connection outside of any device, so i can just measure and profile the power usage of the SD card alone.

i got the parts today, i'll report back in few days with my findings
  • 0

ByReaL
 

Re: Using a Flashair wifi sdcard on a 3D printer

Postby ByReaL » 2015-Nov-Tue-02-Nov

Total fail but gathered more data

you were right there is enough power for the card,
i was right interm that if you don't have the recommended caps there will be a huge power drop see the pictures with and without a cap. (i left it there just for the piece of mind)
i cannot post images<hmmmmmm>
anyway the voltage drops to as low as 1V when the wifi card is being inserted without the caps

now based on your discovery i went further and i taped of one pin at a time from the SD card
the pin marked here was disconnected rest were connected as normal
pin9 = SD card worked but no wifi
pin1(CS)= card is not working but wifi works
pin2(MOSI)= card is not working but wifi works
pin3= GND
pin4= VCC
pin5(SCK)= card is not working but wifi works
pin6= GND
pin7(MISO)= card is not working but wifi works
pin8= SD card worked but no wifi

so if we mess with any of the communication pins card will not work(obviously) but the wifi does

we can conclude for now that it has nothing to do with the power (even if i would add the 2 recommended electrolytic caps)
but is something in the communication with the card,wild speculation maybe an exclusive access is hold to the card memory or something like that
  • 0

ByReaL
Waiting to connect to printer...
 
Posts: 1
Joined: 2015-Nov-Tue-02-Nov
Reputation: 0

Re: Using a Flashair wifi sdcard on a 3D printer

Postby RetireeJay » 2015-Nov-Tue-08-Nov

ByReaL wrote:i cannot post images<hmmmmmm>

Even newbies can post pictures. viewtopic.php?f=7&t=6771 (and there are links to that post in every Newbie section).
  • 0

Printrbot Plus operational January 2013
Brass threaded rods (5/16" X 18) & nuts for Z axis
GT2 belts & pulleys
Cable chain to reduce probability of fatigue failure in wires
E3D V5 Hot End, 0.4mm nozzle, also 0.8 and 0.25 in use occasionally
PB fan mount + 40mm fan -- using printed mount adapter, not the E3D supplied fan
Injection molded extruder gears
Optical Z "endstop" (custom designed and built)
Have used many pounds of T-Glase filament. Now also doing some work with Ninjaflex SemiFlex
Print on glass with Scotch Craft Stick or other glue stick
"My next printer is..." Prusa i3 MK3
User avatar
RetireeJay
My next printer is...
 
Posts: 4931
Joined: 2013-Jan-Wed-13-Jan
Location: Greenville, SC
Reputation: 494

Re: Using a Flashair wifi sdcard on a 3D printer

Postby Hman545 » 2015-Nov-Sat-21-Nov

Woohoo, found a patch for Marlin to work with the Toshiba flashair, and it works!

Thankyou Mr.RC-Cam.
www.rc-cam.com/forum/index.php?/topic/4 ... are-patch/

Here's the patch instructions for the Marlin reprap Firmware:

1. Two files need to be edited. Start by loading Marlin's sketch (source) code into the Arduino IDE. Or use your favorite text editor.

2. Open file "configuration.h"

3. In any convenient place under the BAUDRATE section, add the following code:

// FLASH_AIR_WIFI must be defined if a Toshiba FlashAir card's WiFi is used.
// The FlashAir card will broadcast approx 6 seconds after Mounting.
// If a WiFi link is not established within 1 minute the FlashAir's WiFi will
// hibernate (must re-Mount card to retry WiFi linking).
#define FLASH_AIR_WIFI // Uncomment this if Toshiba FlashAir WiFi is used.


Save the file.

4. Open file "Sd2Card.cpp"

5. Find the Sd2Card::readData() function.

6. At the bottom of the function, find this text:

// discard CRC
spiRec();
spiRec();
chipSelectHigh();
return true;

fail:
chipSelectHigh();
return false;


7. Replace it with this:

// discard CRC
spiRec();
spiRec();
#endif
chipSelectHigh();
#ifdef FLASH_AIR_WIFI // Toshiba FlashAir Patch.
spiSend(0XFF); // Purge pending status byte.
#endif
return true;

fail:
chipSelectHigh();
#ifdef FLASH_AIR_WIFI // Toshiba FlashAir Patch.
spiSend(0XFF); // Purge pending status byte.
#endif
return false;


Save the File.

8. Use the Arduino IDE and upload (re-flash) your printer. Done!


Note: I had to add #endif for it to compile correctly.
Wifi function now works and the printer can access the sd card at the same time.
  • 0

Last edited by Hman545 on 2015-Nov-Sat-21-Nov, edited 1 time in total.
Hman545
Waiting to connect to printer...
 
Posts: 5
Joined: 2015-Nov-Mon-01-Nov
Reputation: 0

Re: Using a Flashair wifi sdcard on a 3D printer

Postby Hman545 » 2015-Nov-Sat-21-Nov

Also thanks thawkins for your blog post on the Flashair, very helpful :)
  • 0

Hman545
Waiting to connect to printer...
 
Posts: 5
Joined: 2015-Nov-Mon-01-Nov
Reputation: 0

Re: Using a Flashair wifi sdcard on a 3D printer

Postby thawkins » 2015-Nov-Sun-04-Nov

Hman545 wrote:Woohoo, found a patch for Marlin to work with the Toshiba flashair, and it works!

Thankyou Mr.RC-Cam.
http://www.rc-cam.com/forum/index.php?/ ... are-patch/

Here's the patch instructions for the Marlin reprap Firmware:

1. Two files need to be edited. Start by loading Marlin's sketch (source) code into the Arduino IDE. Or use your favorite text editor.

2. Open file "configuration.h"

3. In any convenient place under the BAUDRATE section, add the following code:

// FLASH_AIR_WIFI must be defined if a Toshiba FlashAir card's WiFi is used.
// The FlashAir card will broadcast approx 6 seconds after Mounting.
// If a WiFi link is not established within 1 minute the FlashAir's WiFi will
// hibernate (must re-Mount card to retry WiFi linking).
#define FLASH_AIR_WIFI // Uncomment this if Toshiba FlashAir WiFi is used.


Save the file.

4. Open file "Sd2Card.cpp"

5. Find the Sd2Card::readData() function.

6. At the bottom of the function, find this text:

// discard CRC
spiRec();
spiRec();
chipSelectHigh();
return true;

fail:
chipSelectHigh();
return false;


7. Replace it with this:

// discard CRC
spiRec();
spiRec();
#endif
chipSelectHigh();
#ifdef FLASH_AIR_WIFI // Toshiba FlashAir Patch.
spiSend(0XFF); // Purge pending status byte.
#endif
return true;

fail:
chipSelectHigh();
#ifdef FLASH_AIR_WIFI // Toshiba FlashAir Patch.
spiSend(0XFF); // Purge pending status byte.
#endif
return false;


Save the File.

8. Use the Arduino IDE and upload (re-flash) your printer. Done!


Note: I had to add #endif for it to compile correctly.
Wifi function now works and the printer can access the sd card at the same time.


You are the man..... i was just working through looking at the differences between on each pin between my flashforge which works and the ramps machine that does not. But this is a much more subtle issue.
  • 0

Jonbot+
225mm x 200mm - Heated Bed
RAMPS 1.4 running Marlin 1.1.0
Full Graphic display.
-------------------------------
Zen Toolworks CNC/3d printer
230mmx360mm bed
Dual j-head hotends.
Dual heated beds.
RAMPS 1.4 running Marlin 0.98
-------------------------------
Flashforge 3d Creator Pro
Dual Extruder
220x143x150mm
Mightyboard rev e, runnimg Sailfish 7.7r1234
-------------------------------
Photon, self designed printed printer.
User avatar
thawkins
Print winner 2nd
Print winner 2nd
 
Posts: 1636
Joined: 2013-Aug-Sun-10-Aug
Location: Manila, Philippines
Reputation: 172


Return to Software usage talk

Who is online

Users browsing this forum: No registered users and 2 guests