diff --git a/miosix/Makefile b/miosix/Makefile
index a7b95f7dbfa56abf2b0d07fa7dc47f6bfc1d3b01..c9a5b8ad4bfca4b288b44ad36af359926ebcbb0e 100644
--- a/miosix/Makefile
+++ b/miosix/Makefile
@@ -23,10 +23,10 @@ filesystem/filesystem.cpp                                                  \
 filesystem/file_access.cpp                                                 \
 filesystem/file.cpp                                                        \
 filesystem/stringpart.cpp                                                  \
+filesystem/console/console_device.cpp                                      \
 filesystem/mountpointfs/mountpointfs.cpp                                   \
 filesystem/devfs/devfs.cpp                                                 \
 filesystem/devfs/base_files.cpp                                            \
-filesystem/devfs/console_device.cpp                                        \
 filesystem/fat32/ff.c                                                      \
 filesystem/fat32/diskio.cpp                                                \
 stdlib_integration/libc_integration.cpp                                    \
diff --git a/miosix/_doc/textdoc/Changelog.txt b/miosix/_doc/textdoc/Changelog.txt
index 4349c71366f83ea4c05b6800dde2ca53c709d6e6..ba515e2f066479764f8d3255638384bf7a3660a1 100644
--- a/miosix/_doc/textdoc/Changelog.txt
+++ b/miosix/_doc/textdoc/Changelog.txt
@@ -1,5 +1,7 @@
 Changelog for Miosix np embedded OS
 
+- File abstraction layer: Moved console support out of DevFs, will allow
+  better code size reduction if DevFs is not needed
 - File abstraction layer: Addded support for stateless and stateful
   device files, added DeviceFileGenerator to support stateful devices.
 - File abstraction layer: TerminalDevice is now instantiated in the FDT
diff --git a/miosix/_tools/testsuite/testsuite.cpp b/miosix/_tools/testsuite/testsuite.cpp
index 8f93c2e4f33e9c9d6e4648e0c56b3c8a4047d378..72b8411dc8e520019ad63f731777d3d5b0dba05b 100644
--- a/miosix/_tools/testsuite/testsuite.cpp
+++ b/miosix/_tools/testsuite/testsuite.cpp
@@ -52,7 +52,7 @@
 #include "interfaces/endianness.h"
 #include "miosix/e20/e20.h"
 #include "kernel/intrusive.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 #include "util/crc16.h"
 
 using namespace std::tr1;
diff --git a/miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp.cpp b/miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp.cpp
index f646efb824271a4c866aaffb21148a419cb9bb7d..ed587db532a13711b3161bbbb11e7964764dd730 100644
--- a/miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp.cpp
+++ b/miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/bsp.cpp
@@ -45,7 +45,7 @@
 #include "config/miosix_settings.h"
 #include "kernel/logging.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 /**
 \internal
diff --git a/miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp.cpp
index a2111dd871455be2884685ae55b76564b58278bc..45191c87ab99957417001a1e2e7c66cb3c0aa2e4 100644
--- a/miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32/stm32f100rb_stm32vldiscovery/interfaces-impl/bsp.cpp
@@ -45,7 +45,7 @@
 #include "kernel/logging.h"
 #include "drivers/serial.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp.cpp
index a42f7d2a224f3d6c7fd0dcf2a1ed6499079796a5..f20750203ae314e2ee6b48b3141671ab10225717 100644
--- a/miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32/stm32f103ve_mp3v2/interfaces-impl/bsp.cpp
@@ -45,7 +45,7 @@
 #include "kernel/logging.h"
 #include "drivers/serial.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp.cpp
index 474631a8c210bacb5b9beec42277ccb073c91c84..6d27b088e97eb56d7649801fcda96719611ad3bc 100644
--- a/miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32/stm32f103ve_strive_mini/interfaces-impl/bsp.cpp
@@ -45,7 +45,7 @@
 #include "kernel/logging.h"
 #include "drivers/serial.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp.cpp
index 8b0fae92e19919c3432129116961d479215d8a56..6cd31897fda448a933a884d44dacd1eb3c169825 100644
--- a/miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32/stm32f103ze_redbull_v2/interfaces-impl/bsp.cpp
@@ -45,7 +45,7 @@
 #include "kernel/logging.h"
 #include "drivers/serial.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp.cpp
index 549c7a29b259325fd1da701fdb4f2bd4d9719158..16af6cb4a629024ecb163212bae57a13efb260b8 100644
--- a/miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32/stm32f103ze_stm3210e-eval/interfaces-impl/bsp.cpp
@@ -45,7 +45,7 @@
 #include "kernel/logging.h"
 #include "drivers/serial.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp.cpp
index 26c8ef8542231e25aaa49a0ac24c19338434acf0..302632941a8c0ad402c447b2313e733d26f856c1 100644
--- a/miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32f2/stm32f207ig_stm3220g-eval/interfaces-impl/bsp.cpp
@@ -46,7 +46,7 @@
 #include "kernel/logging.h"
 #include "console-impl.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp.cpp
index 489a40b539c43eed4682d465bc69fa1cfe4a815f..715dcaa4cc12221530b8129a9db41be92afb195a 100644
--- a/miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32f2/stm32f207ze_als_camboard/interfaces-impl/bsp.cpp
@@ -44,7 +44,7 @@
 #include "kernel/logging.h"
 #include "console-impl.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp.cpp
index e08d60e65fd06aaf7b24c37df6de878dffc4e1cf..c316415ee08068d77b1bbc5c5fad0dbaf6d4d34f 100644
--- a/miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32f2/stm32f207zg_EthBoardV2/interfaces-impl/bsp.cpp
@@ -47,7 +47,7 @@
 #include "kernel/logging.h"
 #include "console-impl.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp.cpp b/miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp.cpp
index ad82c622a1079a7d1cfc5262c31638d0ffc00abb..96bdf1b854280d583b506809c5b98f796e7835dc 100644
--- a/miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM3_stm32l1/stm32l151c8_als_mainboard/interfaces-impl/bsp.cpp
@@ -44,7 +44,7 @@
 #include "kernel/logging.h"
 #include "console-impl.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp.cpp b/miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp.cpp
index 721cdac8f36a6feda6b0b921f218bc3be01fc7dc..d2e2eaa7b2292c605965dbaa52d445f161d774c2 100644
--- a/miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM4_stm32f4/stm32f407vg_bitsboard/interfaces-impl/bsp.cpp
@@ -46,7 +46,7 @@
 #include "kernel/logging.h"
 #include "console-impl.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp.cpp b/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp.cpp
index ca30fcc2bbbcbea871fce7414ead7daf33089607..05fea6accecd691d38a2029099bc1ae52f9d0d88 100644
--- a/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp.cpp
+++ b/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery/interfaces-impl/bsp.cpp
@@ -46,7 +46,7 @@
 #include "kernel/logging.h"
 #include "console-impl.h"
 #include "filesystem/file_access.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 
 namespace miosix {
 
diff --git a/miosix/filesystem/devfs/console_device.cpp b/miosix/filesystem/console/console_device.cpp
similarity index 86%
rename from miosix/filesystem/devfs/console_device.cpp
rename to miosix/filesystem/console/console_device.cpp
index 18864b7733b6d74c06586c6da79300247eb1e52e..edcf3e59e6daabc876785190e9ff01b14b6ce483 100644
--- a/miosix/filesystem/devfs/console_device.cpp
+++ b/miosix/filesystem/console/console_device.cpp
@@ -27,11 +27,51 @@
 
 #include "console_device.h"
 #include <errno.h>
-#include "base_files.h"
 #include <interfaces/console.h> //FIXME: remove
 
 namespace miosix {
 
+//
+// class ConsoleDevice
+//
+
+ssize_t ConsoleDevice::write(const void *data, size_t len)
+{
+    return len;
+}
+
+ssize_t ConsoleDevice::read(void *data, size_t len)
+{
+    return -EBADF;
+}
+
+off_t ConsoleDevice::lseek(off_t pos, int whence)
+{
+    switch(whence)
+    {
+        case SEEK_SET:
+        case SEEK_CUR:
+        case SEEK_END:
+            return -EBADF;
+        default:
+            return -EINVAL;
+    }
+}
+
+int ConsoleDevice::fstat(struct stat *pstat) const
+{
+    //TODO: st_dev and st_ino
+    memset(pstat,0,sizeof(struct stat));
+    pstat->st_mode=S_IFCHR | 0755;//crwxr-xr-x Character device
+    pstat->st_nlink=1;
+    pstat->st_blksize=0; //If zero means file buffer equals to BUFSIZ
+    return 0;
+}
+
+int ConsoleDevice::isatty() const { return 1; }
+
+void ConsoleDevice::IRQwrite(const char *str) {}
+
 //
 // class ConsoleAdapter
 //
@@ -48,7 +88,6 @@ ssize_t ConsoleAdapter::read(void *data, size_t len)
     for(size_t i=0;i<len;i++) *d++=Console::readChar();
     return len;
 }
-int ConsoleAdapter::isatty() const { return 1; }
 void ConsoleAdapter::IRQwrite(const char* str)
 {
     Console::IRQwrite(str);
@@ -61,8 +100,8 @@ void ConsoleAdapter::IRQwrite(const char* str)
 //
 
 TerminalDevice::TerminalDevice(intrusive_ref_ptr<FileBase> device)
-        : device(device), mutex(), echo(true),
-          binary(false), skipNewline(false) {}
+        : FileBase(intrusive_ref_ptr<FilesystemBase>()), device(device),
+          mutex(), echo(true), binary(false), skipNewline(false) {}
 
 ssize_t TerminalDevice::write(const void *data, size_t len)
 {
@@ -184,7 +223,7 @@ void DefaultConsole::IRQset(intrusive_ref_ptr<ConsoleDevice> console)
     #endif //WITH_FILESYSTEM
 }
 
-DefaultConsole::DefaultConsole() : console(new NullFile)
+DefaultConsole::DefaultConsole() : console(new ConsoleDevice)
 #ifndef WITH_FILESYSTEM
 , terminal(console)
 #endif //WITH_FILESYSTEM      
diff --git a/miosix/filesystem/devfs/console_device.h b/miosix/filesystem/console/console_device.h
similarity index 86%
rename from miosix/filesystem/devfs/console_device.h
rename to miosix/filesystem/console/console_device.h
index b78176784103adbd45b5173a3d1cf5e2d520f062..5624d68777580a0784653b781c258d1b40222b1d 100644
--- a/miosix/filesystem/devfs/console_device.h
+++ b/miosix/filesystem/console/console_device.h
@@ -28,7 +28,8 @@
 #ifndef CONSOLE_DEVICE_H
 #define	CONSOLE_DEVICE_H
 
-#include "devfs.h"
+#include "filesystem/file.h"
+#include "kernel/sync.h"
 
 namespace miosix {
 
@@ -36,24 +37,54 @@ namespace miosix {
  * An extension to the FileBase interface that adds a new member function,
  * which is used by the kernel to write debug information before the kernel is
  * started or in case of serious errors, right before rebooting.
+ * This is not a pure virtual class, and the default implementation of all
+ * member functions does nothing, acting as a null console. To have a working
+ * console, board support packages should subclass it an implement read(),
+ * write() and IRQwrite().
  * Classes of this type are reference counted, must be allocated on the heap
- * and managed through intrusive_ref_ptr<DeviceFile>
+ * and managed through intrusive_ref_ptr<ConsoleDevice>
  */
-class ConsoleDevice : public DeviceFile
+class ConsoleDevice : public FileBase
 {
 public:
     /**
      * Constructor
      */
-    ConsoleDevice() {}
+    ConsoleDevice() : FileBase(intrusive_ref_ptr<FilesystemBase>()) {}
+    
+    /**
+     * This default implementation returns as if the data was written, but
+     * does nothing
+     */
+    virtual ssize_t write(const void *data, size_t len);
+    
+    /**
+     * This default implementation returns an error
+     */
+    virtual ssize_t read(void *data, size_t len);
+    
+    /**
+     * This implementation claims to be a character device
+     */
+    virtual off_t lseek(off_t pos, int whence);
+    
+    /**
+     * This implementation returns an error
+     */
+    virtual int fstat(struct stat *pstat) const;
+    
+    /**
+     * This implementation claims to be a tty
+     */
+    virtual int isatty() const;
     
     /**
      * Write a string to the Console.
      * Can ONLY be called when the kernel is not yet started, paused or within
-     * an interrupt.
+     * an interrupt. This default implementation ignores writes.
      * \param str the string to write. The string must be NUL terminated.
      */
-    virtual void IRQwrite(const char *str)=0;
+    virtual void IRQwrite(const char *str);
 };
 
 /**
@@ -64,7 +95,6 @@ class ConsoleAdapter : public ConsoleDevice
 public:
     virtual ssize_t write(const void *data, size_t len);
     virtual ssize_t read(void *data, size_t len);
-    virtual int isatty() const;
     virtual void IRQwrite(const char *str);
 };
 
@@ -72,7 +102,7 @@ public:
  * Teriminal device, proxy object supporting additional terminal-specific
  * features
  */
-class TerminalDevice : public DeviceFile
+class TerminalDevice : public FileBase
 {
 public:
     /**
diff --git a/miosix/filesystem/devfs/base_files.cpp b/miosix/filesystem/devfs/base_files.cpp
index a9d659249498e8192c6d1099b748dbcd9fd13c01..9345d7c14708b5db785f8811ec7b7d387db1f267 100644
--- a/miosix/filesystem/devfs/base_files.cpp
+++ b/miosix/filesystem/devfs/base_files.cpp
@@ -45,8 +45,6 @@ ssize_t NullFile::read(void *data, size_t len)
     return -EBADF;
 }
 
-void NullFile::IRQwrite(const char* str) {}
-
 //
 // class ZeroFile
 //
diff --git a/miosix/filesystem/devfs/base_files.h b/miosix/filesystem/devfs/base_files.h
index 8f82000c7577ef1345b5bf65e0b8f5004811479d..4af5123b3e83d0962235434f91a4d455be115a07 100644
--- a/miosix/filesystem/devfs/base_files.h
+++ b/miosix/filesystem/devfs/base_files.h
@@ -29,14 +29,13 @@
 #define	BASE_FILES_H
 
 #include "devfs.h"
-#include "console_device.h"
 
 namespace miosix {
 
 /**
  * A file where write operations do nothing at all
  */
-class NullFile : public ConsoleDevice
+class NullFile : public DeviceFile
 {
 public:
     /**
@@ -62,14 +61,6 @@ public:
      * of errors
      */
     virtual ssize_t read(void *data, size_t len);
-    
-    /**
-     * Write a string to the Console.
-     * Can ONLY be called when the kernel is not yet started, paused or within
-     * an interrupt.
-     * \param str the string to write. The string must be NUL terminated.
-     */
-    virtual void IRQwrite(const char *str);
 };
 
 /**
diff --git a/miosix/filesystem/devfs/devfs.cpp b/miosix/filesystem/devfs/devfs.cpp
index b652bd61667ce8db271b0443f6e0641551e1d432..c4db704a3230f7d4a2af9b59859d84838c74ccc5 100644
--- a/miosix/filesystem/devfs/devfs.cpp
+++ b/miosix/filesystem/devfs/devfs.cpp
@@ -29,7 +29,6 @@
 #include <string>
 #include <errno.h>
 #include "base_files.h"
-#include "console_device.h"
 #include "filesystem/stringpart.h"
 
 using namespace std;
@@ -127,8 +126,6 @@ DevFs::DevFs() : inodeCount(1)
     addDeviceFile("/zero",intrusive_ref_ptr<DeviceFileGenerator>(
         new StatelessDeviceFileGenerator(
             intrusive_ref_ptr<DeviceFile>(new ZeroFile))));
-    addDeviceFile("/console",intrusive_ref_ptr<DeviceFileGenerator>(
-        new StatelessDeviceFileGenerator(DefaultConsole::instance().get())));
 }
 
 bool DevFs::addDeviceFile(const char* name,
diff --git a/miosix/filesystem/file_access.cpp b/miosix/filesystem/file_access.cpp
index 134a213ae2e970a4f4ef798520a15788dc7660ef..aec96400ec9d36feedc1db90ffbb099ea6953d37 100644
--- a/miosix/filesystem/file_access.cpp
+++ b/miosix/filesystem/file_access.cpp
@@ -2,6 +2,7 @@
 #include "file_access.h"
 #include <vector>
 #include <climits>
+#include "console/console_device.h"
 #include "mountpointfs/mountpointfs.h"
 #include "kernel/logging.h"
 
@@ -77,11 +78,8 @@ FileDescriptorTable::FileDescriptorTable()
     : mutex(FastMutex::RECURSIVE), cwd("/")
 {
     FilesystemManager::instance().addFileDescriptorTable(this);
-    //We need to open stdin, stdout, stderr.
-    //We're relying on open to choose the lowest numbered files slot
-    open("/dev/console",0,0); //FIXME: flags is wrong
-    files[0]=files[1]=files[2]=
-        intrusive_ref_ptr<FileBase>(new TerminalDevice(files[0]));
+    files[0]=files[1]=files[2]=intrusive_ref_ptr<FileBase>(
+        new TerminalDevice(DefaultConsole::instance().get()));
 }
 
 FileDescriptorTable::FileDescriptorTable(const FileDescriptorTable& rhs)
diff --git a/miosix/filesystem/file_access.h b/miosix/filesystem/file_access.h
index 5b3a718e3b432546c72abd219fd6a2f968a69262..d7f2d50cfbc2651d76cb1aa6243c8fefce55398d 100644
--- a/miosix/filesystem/file_access.h
+++ b/miosix/filesystem/file_access.h
@@ -358,10 +358,7 @@ intrusive_ref_ptr<DevFs> basicFilesystemSetup();
 
 /**
  * \return a pointer to the file descriptor table associated with the
- * current process. Note: make sure you don't call this function before
- * /dev/console exists (which implies that / and /dev are mounted, which is
- * usually done with basicFilesystemSetup()), otherwise stdin/stdout/stderr
- * won't be set up properly
+ * current process.
  */
 FileDescriptorTable& getFileDescriptorTable();
 
diff --git a/miosix/kernel/logging.h b/miosix/kernel/logging.h
index 5ab23a086cbe922acd68806b0e2f3540e934d85f..eaaa4077e4d7c1b01eb3ecc9a51ab501cae32c32 100644
--- a/miosix/kernel/logging.h
+++ b/miosix/kernel/logging.h
@@ -29,7 +29,7 @@
 #define	LOGGING_H
 
 #include "config/miosix_settings.h"
-#include "filesystem/devfs/console_device.h"
+#include "filesystem/console/console_device.h"
 #include <cstring>
 
 namespace miosix {
diff --git a/miosix_np_2/nbproject/configurations.xml b/miosix_np_2/nbproject/configurations.xml
index 36a106b1a2fef67fbdefb7490c946a11ca91edc4..fbe87c79edf6c0d9b1a3bb2400726029b89e86ad 100644
--- a/miosix_np_2/nbproject/configurations.xml
+++ b/miosix_np_2/nbproject/configurations.xml
@@ -304,11 +304,13 @@
           <in>e20.h</in>
         </df>
         <df name="filesystem">
+          <df name="console">
+            <in>console_device.cpp</in>
+            <in>console_device.h</in>
+          </df>
           <df name="devfs">
             <in>base_files.cpp</in>
             <in>base_files.h</in>
-            <in>console_device.cpp</in>
-            <in>console_device.h</in>
             <in>devfs.cpp</in>
             <in>devfs.h</in>
           </df>
@@ -1298,22 +1300,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -2415,22 +2417,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -3534,22 +3536,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -4653,22 +4655,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -5772,22 +5774,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -6891,22 +6893,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -8010,22 +8012,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -9127,22 +9129,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -10244,22 +10246,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -11361,22 +11363,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -12478,22 +12480,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -13595,22 +13597,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
@@ -14712,22 +14714,22 @@
       </item>
       <item path="../miosix/e20/e20.h" ex="false" tool="3" flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.cpp"
+      <item path="../miosix/filesystem/console/console_device.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/base_files.h"
+      <item path="../miosix/filesystem/console/console_device.h"
             ex="false"
             tool="3"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.cpp"
+      <item path="../miosix/filesystem/devfs/base_files.cpp"
             ex="false"
             tool="1"
             flavor2="0">
       </item>
-      <item path="../miosix/filesystem/devfs/console_device.h"
+      <item path="../miosix/filesystem/devfs/base_files.h"
             ex="false"
             tool="3"
             flavor2="0">
diff --git a/miosix_np_2/nbproject/private/configurations.xml b/miosix_np_2/nbproject/private/configurations.xml
index cd0f38a1201a9d5e05d00976489c91c479acf0f6..76d068c751bb547d2646fe93bb0b11ae80636b8d 100644
--- a/miosix_np_2/nbproject/private/configurations.xml
+++ b/miosix_np_2/nbproject/private/configurations.xml
@@ -308,11 +308,13 @@
           <in>e20.h</in>
         </df>
         <df name="filesystem">
+          <df name="console">
+            <in>console_device.cpp</in>
+            <in>console_device.h</in>
+          </df>
           <df name="devfs">
             <in>base_files.cpp</in>
             <in>base_files.h</in>
-            <in>console_device.cpp</in>
-            <in>console_device.h</in>
             <in>devfs.cpp</in>
             <in>devfs.h</in>
           </df>