diff --git a/tools/binman/binman b/tools/binman/binman
index 979b7e4..11a5d8e 120000
--- a/tools/binman/binman
+++ b/tools/binman/binman
@@ -1 +1 @@
-binman.py
\ No newline at end of file
+main.py
\ No newline at end of file
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 67f976e..0e2b507 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -15,7 +15,7 @@
 import tempfile
 import unittest
 
-import binman
+import main
 import cbfs_util
 import cmdline
 import command
@@ -1428,14 +1428,14 @@
     def testEntryDocs(self):
         """Test for creation of entry documentation"""
         with test_util.capture_sys_output() as (stdout, stderr):
-            control.WriteEntryDocs(binman.GetEntryModules())
+            control.WriteEntryDocs(main.GetEntryModules())
         self.assertTrue(len(stdout.getvalue()) > 0)
 
     def testEntryDocsMissing(self):
         """Test handling of missing entry documentation"""
         with self.assertRaises(ValueError) as e:
             with test_util.capture_sys_output() as (stdout, stderr):
-                control.WriteEntryDocs(binman.GetEntryModules(), 'u_boot')
+                control.WriteEntryDocs(main.GetEntryModules(), 'u_boot')
         self.assertIn('Documentation is missing for modules: u_boot',
                       str(e.exception))
 
diff --git a/tools/binman/binman.py b/tools/binman/main.py
similarity index 97%
rename from tools/binman/binman.py
rename to tools/binman/main.py
index ec152e9..daff7ae 100755
--- a/tools/binman/binman.py
+++ b/tools/binman/main.py
@@ -155,8 +155,8 @@
     glob_list = GetEntryModules(False)
     all_set = set([os.path.splitext(os.path.basename(item))[0]
                    for item in glob_list if '_testing' not in item])
-    test_util.RunTestCoverage('tools/binman/binman.py', None,
-            ['*test*', '*binman.py', 'tools/patman/*', 'tools/dtoc/*'],
+    test_util.RunTestCoverage('tools/binman/binman', None,
+            ['*test*', '*main.py', 'tools/patman/*', 'tools/dtoc/*'],
             args.build_dir, all_set)
 
 def RunBinman(args):
diff --git a/tools/patman/test_util.py b/tools/patman/test_util.py
index 4d0085e..76dbc21 100644
--- a/tools/patman/test_util.py
+++ b/tools/patman/test_util.py
@@ -41,7 +41,7 @@
         glob_list = []
     glob_list += exclude_list
     glob_list += ['*libfdt.py', '*site-packages*', '*dist-packages*']
-    test_cmd = 'test' if 'binman.py' in prog else '-t'
+    test_cmd = 'test' if 'binman' in prog else '-t'
     cmd = ('PYTHONPATH=$PYTHONPATH:%s/sandbox_spl/tools %s-coverage run '
            '--omit "%s" %s %s -P1' % (build_dir, PYTHON, ','.join(glob_list),
                                       prog, test_cmd))
